时间:2021-05-19
复制代码 代码如下:
/******** basic.c ********/
#include "basic.h"
pid_t Fork(void)
{
pid_t pid = fork();
if (pid < 0) {
fprintf(stderr, "Fork error: %s\n", strerror(errno));
exit(0);
}
return pid;
}
复制代码 代码如下:
********** basic.h ***********
#ifndef __CSAPP_BASIC_H
#define __CSAPP_BASIC_H
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <string.h>
pid_t Fork();
#endif
复制代码 代码如下:
******* fork.c *********
#include "basic.h"
int main()
{
int pid = Fork();
int x = 2;
if (pid == 0) {
printf("child: pid = %d, ppid = %d, x = %d\n", getpid(), getppid(), ++x);
sleep(3);
printf("child: pid = %d, ppid = %d, x = %d\n", getpid(), getppid(), ++x);
exit(0);
}
printf("parent: pid = %d, ppid = %d, x = %d\n", getpid(), getppid(), --x);
}
通过 gcc fork.c basic.c -o fork 编译即可的 fork 程序。 运行 ./fork
可以看出父进程首先退出,退出前child的PPID为12256, 退出后子进程的PPID变为了 1.说明父进程退出后的子进程由 init 超级进程1领养。而该进程是不绝不会退出的。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
基本概念我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法
subprocess.Popen用来创建子进程。1)Popen启动新的进程与父进程并行执行,默认父进程不等待新进程结束。复制代码代码如下:defTestPope
linux下我们可以调用fork函数创建子进程,创建的子进程将会得到父进程的数据空间、堆、栈......副本(采用写时复制机制),子进程将会继承父进程的信号掩码
本文实例讲述了php多进程编程父进程的阻塞与非阻塞。分享给大家供大家参考,具体如下:php中进程的阻塞,主要是父进程等待子进程退出。1.php代码如下:
Linux下编程,线程、进程退出顺序问题纷纷扰扰,如果父进程/线程先于子进程/线程终止,系统会做什么处理呢?反之,如果子进程/线程先于父进程/线程终止,系统又会