创建进程-fork()函数
fork()的作用是创建一个子进程。
·
fork()函数的作用是创建一个子进程。pid = fork();
代码示例如下:
int main()
{
pid_t pid;
int x = 1;
pid = fork(); //创建子进程
if (pid == 0) { /* Child */
printf("child : x=%d\n", ++x);
exit(0);
}
printf("pid=%d\n", pid);
/* Parent */
printf("parent: x=%d\n", --x);
exit(0);
}
结果:
parent: x=0
pid=29254
child : x=2
fork()进程有以下几个特点:
- 调用1次,返回2次。 一次是在父进程中执行,一次是在刚创建的子进程中执行。 pid为0,表示当前在子进程中。
- 并发执行。 父进程和子进程是并发运行的独立进程。 内核以任意方式交替执行,可能会先执行父进程,也可能会先执行子进程。 程序员应该避免猜测谁先执行来做一下逻辑处理。
- 拥有相同且独立的地址空间: 刚fork出的子进程和父进程拥有相同的用户栈、堆,变量。但他们相互独立的。 例如例子中:输出x的变量值,child自增1与parent自减1互不影响。
更多推荐
已为社区贡献1条内容
所有评论(0)