嵌入式Linux并发程序设计,进程,exec函数族,进程调用指定程序,execl()/execlp(

2019-07-13 02:28发布

文章目录

1,exec函数族

  1. 进程调用exec函数族执行某个程序
  2. 进程当前内容被指定的程序替换
  3. 实现让父子进程执行不同的程序
    ·父进程创建子进程
    ·子进程调用exec函数族
    ·父进程不受影响

2,进程调用指定程序execl()/execlp()

#include
int execl(const char *path, const char *arg, …);
int execlp(const char *file, const char *arg, …);
  1. 成功时执行指定的程序;失败时返回EOF
  2. path 执行的程序名称,包含路径
  3. arg… 传递给执行的程序的参数列表,最后一个参数必须是NULL
  4. file 执行的程序的名称,在PATH中查找

execl()/execlp()示例

执行ls命令,显示/etc目录下所有文件的详细信息 if (execl(/bin/ls”, “ls”,-a”,-l”,/etc”, NULL) < 0) { perror(“execl”); } if (execlp(“ls”, “ls”,-a”,-l”,/etc”, NULL) < 0) { perror(“execlp”); }

3,进程调用指定程序execv()/execvp()

#include
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
  1. 成功时执行指定的程序;失败时返回EOF
  2. arg… 封装成指针数组的形式

execv()/execvp()示例

执行ls命令,显示/etc目录下所有文件的详细信息 char *arg[] = {“ls”,-a”,-l”,/etc”, NULL}; if (execv(/bin/ls”, arg) < 0) { perror(“execv”); } if (execvp(“ls”, arg) < 0) { perror(“execvp”); }

4,进程调用指定程序system()

#include
int system(const char *command);
  1. 成功时返回命令command的返回值;失败时返回EOF
  2. 当前进程等待command执行结束后才继续执行