当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 关于fork的小问题
帖子发表于 : 2010-12-10 20:19 

注册: 2010-12-10 19:43
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
我还只是个菜鸟
求各位大大指导

其实还是关于fork() 的问题

题目的要求是请你用fork()创建子进程的方法
创建尽可能多的子进程,并显示进程数

这是我之前的代码,希望各位能指导下

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int i = 0;
int main() {
int pid = fork();
while(pid == 0){
i ++;
printf("我是第 %d 个子进程,我的进程id是 %d\n", i, getpid());
pid = fork();
}
if(pid == -1){
printf("捕获异常,此时已经新建了 %d 个子进程\n", i);
exit(1);
}
else if(pid > 0){
//printf("我是父进程,我的进程id是 %d\n", getpid());
}
return 0;
}


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 关于fork的小问题
帖子发表于 : 2010-12-12 21:04 
头像

注册: 2007-03-24 23:45
帖子: 2357
送出感谢: 0 次
接收感谢: 9
其实我也不熟,估计是要用到原子把全局计数器操作加法

你自己参考《linux 系统编程》这本书吧,说得挺详细的,网上有中文的pdf,非常好用


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 关于fork的小问题
帖子发表于 : 2010-12-14 14:38 
头像

注册: 2008-09-03 16:16
帖子: 47
地址: 江湖
送出感谢: 3
接收感谢: 0 次
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main(void)
{
int pid, i = 0;
while(1){
pid = fork();
i++;
if(pid == 0)
break;
sleep(1);
}

printf("第 %d 个子进程,进程id是 %d\n", i, getpid());
return 0;
}

/*如果想让子进程不退出printf后加while(1),想速度加快去掉sleep*/


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 关于fork的小问题
帖子发表于 : 2010-12-14 14:39 
头像

注册: 2008-09-03 16:16
帖子: 47
地址: 江湖
送出感谢: 3
接收感谢: 0 次
代码:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main(void)
{
   int pid, i = 0;
   while(1){
      pid = fork();
      i++;
      if(pid == 0)
         break;
      sleep(1);
   }

   printf("第 %d 个子进程,进程id是 %d\n", i, getpid());
   return 0;
}


看你那个全局变量就知道你没理解进程之间的关系!


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 关于fork的小问题
帖子发表于 : 2010-12-14 14:42 
头像

注册: 2008-09-03 16:16
帖子: 47
地址: 江湖
送出感谢: 3
接收感谢: 0 次
UNIX下编程!只需要看一本书APUE

不看个4,5遍不能说看懂了!


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 关于fork的小问题
帖子发表于 : 2010-12-15 20:32 
头像

注册: 2007-03-24 23:45
帖子: 2357
送出感谢: 0 次
接收感谢: 9
进程之间通讯是ipc问题,请查阅unix网络编程第二卷


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译