嵌入式Linux并发程序设计,进程,exec函数族,进程调用指定程序,execl()/execlp(
2019-07-13 02:28发布
生成海报
文章目录
1,exec函数族
- 进程调用exec函数族执行某个程序
- 进程当前内容被指定的程序替换
- 实现让父子进程执行不同的程序
·父进程创建子进程
·子进程调用exec函数族
·父进程不受影响
2,进程调用指定程序execl()/execlp()
#include
int execl(const char *path, const char *arg, …);
int execlp(const char *file, const char *arg, …);
- 成功时执行指定的程序;失败时返回EOF
- path 执行的程序名称,包含路径
- arg… 传递给执行的程序的参数列表,最后一个参数必须是NULL
- 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[]);
- 成功时执行指定的程序;失败时返回EOF
- 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);
- 成功时返回命令command的返回值;失败时返回EOF
- 当前进程等待command执行结束后才继续执行
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮