#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
pid_t pid = fork();
int parent_id;
if(pid>0){
parent_id = getpid();
child_cnt=1;
}
else if(pid==0){
printf("this is child %d ,id = %d\n",0,getpid());
}
for (int i = 1; i <= 9; ++i)
{
if(getpid()==parent_id){
pid = fork();
if(pid<0){
printf("process create failed!\n");
exit(1);
}
else if(pid==0){
printf("this is child %d ,id = %d\n",i,getpid());
break;
}
}
}
return 0;
}
输出:
$ ./fork_10
this is child 0 ,id = 25219
this is child 1 ,id = 25220
this is child 3 ,id = 25222
this is child 2 ,id = 25221
this is child 4 ,id = 25223
this is child 6 ,id = 25225
this is child 5 ,id = 25224
this is child 8 ,id = 25227
this is child 7 ,id = 25226
this is child 9 ,id = 25228
创建4个进程:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
for (int i = 0; i <2; ++i)
{
pid_t pid =fork();
if(pid<0){
exit(1);
}
else if(pid ==0){
printf("this is a child,id = %d,pid = %d\n",getpid(),getppid());
}
else
printf("this is parent ,id = %d\n",getpid() );
}
return 0;
}
输出:
this is parent ,id = 25083
this is parent ,id = 25083
this is a child,id = 25085,pid = 25083
this is a child,id = 25084,pid = 25083
this is parent ,id = 25084
this is a child,id = 25086,pid = 25084
本文通过两个实例详细解析了fork函数在C语言中的使用方法及进程创建过程。第一个实例展示了如何利用fork创建10个子进程,并打印每个进程的ID;第二个实例则演示了创建4个进程的过程,同时展示了父进程和子进程的ID及其关系。这两个实例帮助读者理解进程的创建机制和父子进程间的通信。
1673

被折叠的 条评论
为什么被折叠?



