C语言fork()函数创建进程:父子进程交替输出示例
下面是使用fork()函数创建进程的程序编码:
#include <stdio.h>
#include <unistd.h>
int main() {
pid_t pid;
pid = fork();
if (pid < 0) {
fprintf(stderr, "Fork failed\n");
return 1;
} else if (pid == 0) {
for (int i = 0; i < 5; i++) {
printf('I am child, pid=%d\n', getpid());
sleep(1);
}
} else {
for (int i = 0; i < 5; i++) {
printf('I am parent, pid=%d\n', getpid());
sleep(1);
}
}
return 0;
}
编译运行该程序,可以得到以下输出结果:
I am parent, pid=1234
I am child, pid=1235
I am parent, pid=1234
I am child, pid=1235
I am parent, pid=1234
I am child, pid=1235
I am parent, pid=1234
I am child, pid=1235
I am parent, pid=1234
结果分析:
- 程序中的fork()函数会在调用处将进程分成两个部分,一个是父进程,一个是子进程。
- 父进程中的fork()函数返回子进程的PID,子进程中的fork()函数返回0。
- 父进程中的if语句块会执行父进程的输出,子进程中的if语句块会执行子进程的输出。
- 父进程和子进程中的循环分别执行5次,每次循环间隔1秒。
- 父进程和子进程的输出结果交替出现,因为它们是并发执行的。
- 父进程的PID是固定的,而子进程的PID是由操作系统分配的。
因此,程序中父子进程交替输出的原因是它们是并发执行的,而每个进程输出的间隔是1秒。
原文地址: https://www.cveoy.top/t/topic/pk2s 著作权归作者所有。请勿转载和采集!