在LinuxUnix下创建进程

mac2022-06-30  29

前言

不同的操作系统采用不同的实现方式来创建进程。例如在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命令

效果

最新回复(0)