在Linux/Unix下创建进程
前言
不同的操作系统采用不同的实现方式来创建进程。例如在Unix系统中,每个进程都有唯一的进程识别号(PID)。父进程利用fork系统调用来创建新进程。
fork的返回值小于零,说明进程没有创建成功;
fork的返回值等于零,表示子进程正在执行;
fork的返回值大于零,表示父进程还在执行。
子进程被创建后,一般使用execlp系统调用——用一个程序取代原来内存空间中的内容,然后开始执行。这样两个进程就各行其道了。
如果父进程无事可做,就执行wait系统调用,让自己插入睡眠队列,等待子进程的终结。
下面程序展示了在Unix/Linux系统中,父进程创建子进程以及各自分开活动的情况。
代码
#include<unistd.h>
#include<sys/types.h>
#include<stdio.h>
int main(int argc,char *arg[])
{
int pid;
pid=fork();
if(pid<0){
fprintf(stderr,"进程创建失败");
exit(-1);
}
else if(pid==0){
execlp("/bin/ls","ls",NULL);
}
else{
wait(NULL);
printf("子进程已完成");
exit(0);
}
}
思路解析
上述代码中,父进程创建了子进程,子进程会用打开目录/bin下面的ls命令
还没有评论,来说两句吧...