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

1,exec函数族

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

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

#include <unistd.h>
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 <unistd.h>
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 <stdlib.h>
int system(const char *command);

  1. 成功时返回命令command的返回值;失败时返回EOF
  2. 当前进程等待command执行结束后才继续执行

猜你喜欢

转载自blog.csdn.net/m0_37542524/article/details/83794589