我对 fork() 意见相当大大

mayer21548 2012-07-24 09:53:48
贴出一段代码 如下:

pid_t pid;
int listenfd , connfd;

listenfd = socket(....);

bind(listenfd,....);

listen(listenfd,0);
for(; ; ) {
connfd = accept(listenfd, .....);
## if(( pid = fork()) == 0) {
.....
close(listenfd);
......// do something
close(connfd);
exit(0);
}
close(connfd);
}

fork 会返回两次,在父进程中返回一次,在子进程中返回一次。
在 ## 这行代码中 if 语句作用是 拦截 子进程中fork的返回。 其实fork 这个创建进程的方法纯粹在浪费内存空间。实质上 if 大括号 {....} 里面的语句 还是在父进程中进行的。子进程根本没有任何作用,除了给 if 语句提供一个 条件表达式的判断 之外 没有其他作用。。
各位是不是这样的啊??
...全文
253 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
titer1 2012-08-11
  • 打赏
  • 举报
回复
fork表示很无辜
shandaben 2012-08-11
  • 打赏
  • 举报
回复
fork真的很冤枉
qq120848369 2012-08-10
  • 打赏
  • 举报
回复
明明啥都不懂,还对fork有意见,太浮躁了。
hukui161 2012-08-10
  • 打赏
  • 举报
回复
fork表示躺着也中枪。
liuweijie0354 2012-08-10
  • 打赏
  • 举报
回复
建议你看一下fork函数的用法
Redshadows 2012-08-10
  • 打赏
  • 举报
回复
fork一次调用,两次返回。

返回0,子进程;

返回 > 0,父进程;

返回 < 0,出错。

子进程从fork的下一个语句开始执行。
SunnyWun 2012-08-09
  • 打赏
  • 举报
回复
对你的意见也很大。fork()是少有的有两个返回值的函数呢。。
honty 2012-07-25
  • 打赏
  • 举报
回复
楼主这样看不出来在子进程执行的,可以加下打印进清晰了
疯疯癫癫 2012-07-25
  • 打赏
  • 举报
回复
fork调用一次返回两次,而返回0则是子进程
mayer21548 2012-07-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

fork对你的意见也很大。。。

fork返回值是0的时候,就是子进程。你非要说是父进程。fork能对你没意见吗?呵呵
[/Quote] 难道 if 后面的大括号里面的语句是在 子进程中执行的?我怎么认为是在父进程中执行的。因为fork已经返回了。。
program2050 2012-07-24
  • 打赏
  • 举报
回复
fork对你的意见也很大。。。

fork返回值是0的时候,就是子进程。你非要说是父进程。fork能对你没意见吗?呵呵

23,131

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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