exce()族
exec()
族函数功能是将当前的进程替换成一个新的进程,执行到exec()
函数时当前进程就会结束新进程则开始执行。但新进程保留之前进程的进程号,本文以execl()
函数为例来进行讲解。
execl()函数原型
#include <unistd.h>
int execl(const char *path, const char *arg, .../* (char *) NULL */);
参数
path
- 执行文件的路径
arg
- 执行文件的参数,可以比作arg0,,arg1,,arg2,…,argn
最后一个参数必须赋值为NULL
返回值
execl()
函数只有在失败时才会返回,返回值为-1
并设置errno
信息。
实例
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
pid_t pid;
while(1) {
pid = fork();
switch(pid) {
case -1:
perror("fork");
exit(1);
break;
case 0:
printf("execute \"ls -l\"\n");
execl("/bin/ls", "ls", "-l", NULL);
perror("execl");
exit(1);
break;
default:
/*按下q键退出,其他键继续*/
if(getchar() == 'q') {
exit(1);
}
break;
}
}
return 0;
}