当前位置: 技术问答>linux和unix
我对 fork() 意见相当大大
来源: 互联网 发布时间:2017-03-09
本文导语: 贴出一段代码 如下: pid_t pid; int listenfd , connfd; listenfd = socket(....); bind(listenfd,....); listen(listenfd,0); for(; ; ) { connfd = accept(listenfd, ........
贴出一段代码 如下:
fork 会返回两次,在父进程中返回一次,在子进程中返回一次。
在 ## 这行代码中 if 语句作用是 拦截 子进程中fork的返回。 其实fork 这个创建进程的方法纯粹在浪费内存空间。实质上 if 大括号 {....} 里面的语句 还是在父进程中进行的。子进程根本没有任何作用,除了给 if 语句提供一个 条件表达式的判断 之外 没有其他作用。。
各位是不是这样的啊??
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 语句提供一个 条件表达式的判断 之外 没有其他作用。。
各位是不是这样的啊??
|
fork对你的意见也很大。。。
fork返回值是0的时候,就是子进程。你非要说是父进程。fork能对你没意见吗?呵呵
fork返回值是0的时候,就是子进程。你非要说是父进程。fork能对你没意见吗?呵呵
|
fork调用一次返回两次,而返回0则是子进程
|
楼主这样看不出来在子进程执行的,可以加下打印进清晰了
|
对你的意见也很大。fork()是少有的有两个返回值的函数呢。。
|
fork一次调用,两次返回。
返回0,子进程;
返回 > 0,父进程;
返回
返回0,子进程;
返回 > 0,父进程;
返回
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!