fork的应用
由f o r k创建的新进程被称为子进程( child process)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新子进程的进程I D。将子进程I D返回给父进程的理由是:因为一个进程的子进程可以多于一个,所以没有一个函数使一个进程可以获得其所有子进程的进程I D。f o r k使子进程得到返回值0的理由是:一个进程只会有一个父进程,所以子进程总是可以调用g e t p p i d以获得其父进程的进程I D (进程ID 0总是由交换进程使用,所以一个子进程的进程I D不可能为0 )。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void main()
{
int pid;
/* fork 瀛愯繘绋?*/
pid=fork();
switch(pid) {
case -1:
perror("fork failed");
exit(1);
case 0:
execl("/bin/ls","ls","-l","--color",NULL);
perror("execl failed");
exit(1);
default:
wait(NULL);
printf("ls completed\n");
exit(0);
}
}
- 点赞
- 收藏
- 关注作者
评论(0)