免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2690 | 回复: 14
打印 上一主题 下一主题

[C] 生孩子出问题了! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-16 16:48 |只看该作者 |倒序浏览
想试试生一个子进程
然后就是孩子就打印出孩子
是老爸就打印出老爸
可是好像出了点问题     看了老半天不知道问题出在哪了
还有 为什么会出现两个Father

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

int main(void)
{
        pid_t        pid;

        if( (pid == fork()) < 0 ){
                printf("Fork ERROR!\n");
                exit(1);
        }
        else if(pid == 0){
                printf("Child!\n");
        }
        else if( pid > 0){
                printf("Father!\n");
               
        }

        exit(0);
}


[bapu@www /usr/home/bapu/Desktop]$ gcc foo.c
[bapu@www /usr/home/bapu/Desktop]$ ./a.out
Father!
Father!
bapu@www /usr/home/bapu/Desktop]$

[ 本帖最后由 xixiweiwei 于 2008-6-16 16:49 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-06-16 16:53 |只看该作者

if( (pid == fork()) < 0 ){
将==改为=

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
3 [报告]
发表于 2008-06-16 16:53 |只看该作者
(pid = fork())

论坛徽章:
0
4 [报告]
发表于 2008-06-16 16:55 |只看该作者
是啊 汉.....

可是为什么不改就是两个Father 呢

论坛徽章:
0
5 [报告]
发表于 2008-06-16 16:59 |只看该作者
你不是要把fork的返回结果赋值给pid,然后把pid和0比较吗。。。。

赋值当然是=

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2008-06-16 17:17 |只看该作者
原帖由 xixiweiwei 于 2008-6-16 16:55 发表
是啊 汉.....

可是为什么不改就是两个Father 呢

因为改了就对了呀!

论坛徽章:
0
7 [报告]
发表于 2008-06-16 17:19 |只看该作者
最近生孩子的真多。。。。

论坛徽章:
0
8 [报告]
发表于 2008-06-16 17:21 |只看该作者
pid初始化的时候可能是个大于零的值,然后pid == fork()没赋上值,但fork()却成功了。
在父子进程里,都有pid > 0,所以打印两次

论坛徽章:
0
9 [报告]
发表于 2008-06-16 18:10 |只看该作者
这标题不得不让我留名赞一下

论坛徽章:
0
10 [报告]
发表于 2008-06-16 18:50 |只看该作者
haha  真的挺有意思的啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP