fork

lvp1984 2009-05-10 06:35:56
我有这样一个程序,共会产生几个进程(父进程也算)?
1 #include <stdio.h>
2 #include <sys/types.h>
3 #include <unistd.h>
4
5 int main()
6 {
7 printf("Welcome to pid world ^_^ pid=%d,ppid=%d\n",getpid(),getppid());
8 pid_t new_pid1;
9 pid_t new_pid2;
10 pid_t new_pid3;
11 new_pid1=fork();
12 new_pid2=fork();
13 new_pid3=fork();
14 return 0;
15 }
...全文
178 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lvp1984 的回复:]
晕倒,原来一个for循环就能搞定...
[/Quote]

你错了,不是那个 for能搞定,能搞定的是if跟exit
lvp1984 2009-05-10
  • 打赏
  • 举报
回复
晕倒,原来一个for循环就能搞定...
pgmvo 2009-05-10
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
int i;
pid_t pid;

for (i=0; i<6; i++) {
pid=fork();
if (pid==0) {
printf("child %d\n", i);
exit(0);
}
}
}
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 morris88 的回复:]
C/C++ codeint i;
pid_t pid;

for (i = 0; i < 6; i++) {
pid = fork();
if (pid == 0) {
printf("child %d\n", i);
exit(0);
}
}



随便乱写的,不知行不...
[/Quote]

这样就可以的,最基本的写法就是这样的。楼主这都不会?
fly_new 2009-05-10
  • 打赏
  • 举报
回复
看错需求了,不好意思,^_^!!楼上的方法对的。

pid_t a;
int i;

for(i=0;i<6;i++)
{
a = fork();
if(a==0)
{
break;
}
}

/*其他代码*/
fly_new 2009-05-10
  • 打赏
  • 举报
回复

int a;

fork();/*两个了*/

a = fork();/*两次调用*/
if(a!=0)/*父进程返回子进程的id,子进程会返回0*/
{
fork();/*在两个父进程里,再次被创建2次*/
}

/*其他代码*/
morris88 2009-05-10
  • 打赏
  • 举报
回复
int i;
pid_t pid;

for (i = 0; i < 6; i++) {
pid = fork();
if (pid == 0) {
printf("child %d\n", i);
exit(0);
}
}


随便乱写的,不知行不...
lvp1984 2009-05-10
  • 打赏
  • 举报
回复
怎么开fork6次?
请简要写下代码
liliangbao 2009-05-10
  • 打赏
  • 举报
回复
帮顶~
liliangbao 2009-05-10
  • 打赏
  • 举报
回复
帮顶~
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lvp1984 的回复:]
是8个,2的n次方,3还会有一个孩子,我想问如果我只想开启6个子进程,怎么弄?
就像apache那样一个父进程开启6个服务进程?
[/Quote]

你不要这样迭代fork,好不。
老老实实地开fork6次就可以了啊
lvp1984 2009-05-10
  • 打赏
  • 举报
回复
是8个,2的n次方,3还会有一个孩子,我想问如果我只想开启6个子进程,怎么弄?
就像apache那样一个父进程开启6个服务进程?
arong1234 2009-05-10
  • 打赏
  • 举报
回复
7个
父进程(P1)
父进程的孩子1(P2)
父进程的孩子2(P3)
父进程的孩子3(P4)
P2的孩子1(P5)
P2的孩子2(P6)
P5的孩子

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧