exec族函数学习笔记

o ## exec族函数
为什么使用exec族函数?

让一个进程要执行另一个不同的程序。在fork创建一个新进程后,调用exec族函数来让新进程执行其他程序。
exec族函数
execl, execlp, execle, execv, execvp, execvpe ,调用失败时返回-1,并从调用点继续往下执行。

exec族函数原型

#include <unistd.h>
extern char **environ;

int execl(const char *path, const char *arg, ...);
int execv(const char *path, char *const argv[]);
int execlp(const char *file, const char *arg, ...);
int execvp(const char *file, char *const argv[]);
int execle(const char *path, const char *arg,..., char * const envp[]);
int execvpe(const char *file, char *const argv[],char *const envp[]);     

path:可执行文件的路径名字,arg:可执行程序所带的参数。file:可执行文件路径 名,或者PATH环境变量。

测试代码:调用execl让子进程执行date获取时间

 #include <stdio.h>
 #include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{

   pid_t pid;
   int cnt =0;
   pid = vfork();
   if(pid == 0){
              while(1){
              cnt++;
              printf("this is childpro\n");
              sleep(1);
              if(cnt == 5){
                        printf("child quit,wait to get time\n");
                        exit(0);
              }
              }
   }
   if(pid > 0){
             printf("start to get time\n");

   if(execl("/bin/date","date",NULL,NULL) == -1)
   {
             printf("execl error\n");
             perror("why");//打印失败原因
   }
   printf("execl failed\n");
   }
return 0;
}

运行结果:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值