请指教一个基础问题

pang123hui 2010-11-02 06:58:55

1. #include <sys/types.h>
2. #include <unistd.h>
3. #include <stdlib.h>
4. #include <stdio.h>
5. int main(void)
6. {
7. pid_t reuslt ;
8. result = fork();
9. if(result == -1)
10. {
11. perror("fork");
12. exit;
13. }
14. else if(result==0)
15. {
16. printf("The return value is %d\nIn child process!\nMy PID is %d\n",result,getpid());
17. }
18. else
19. {
20. printf("The return value is %d\nIn father process!\nMy PID is %d\n",result ,getpid());
21. }
22. }


我是刚从C语言转向Linux下编程的,所以这个程序很不解,按理说,if语句不是应该只执行一个吗,为什么这里2句printf都会打印出来呢?不解

...全文
193 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyfwx 2010-11-03
  • 打赏
  • 举报
回复
fork(); 会复制夫进程的,并子进程从fork后开始运行
tangxianghenggood 2010-11-03
  • 打赏
  • 举报
回复
这些程序是我自己一个一个写的,现拿出来让和我一样的初学者分享一下,用的是dev C++ 编译,里面包括详细的分析过程和代码注释,有两个文件,一个是c++/c 基础的,另一个是基础提高篇,我相信对初学者是有很大的帮助的! 同时里面有运行的图片,下载的同学可以先看题目,然后在自己去做,在和我比较一下思路,我写的不是很好的地方还望赐教

下载地址:http://tangxianghenggood.download.csdn.net/

上面有,并且我我个人资源里还有dec 写的个系统源代码,希望有帮助,加油
xuwening 2010-11-03
  • 打赏
  • 举报
回复
建议你搜索一下fork(); 的用法,一句两句解释不清楚。
abnerle 2010-11-03
  • 打赏
  • 举报
回复
result = fork(); 都是这个惹的祸
t505556855 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 purewqk 的回复:]
fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。
你这个程序先执行子进程也就是In child process返回result值为0和PID值,
然后父进程In father process,返回result值为子进程ID即上个子进程的PID,然后再是父进程本身的PID
[/Quote] 你仔细看一下其他代码
purewqk 2010-11-02
  • 打赏
  • 举报
回复
fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。
你这个程序先执行子进程也就是In child process返回result值为0和PID值,
然后父进程In father process,返回result值为子进程ID即上个子进程的PID,然后再是父进程本身的PID
gjqdestiny 2010-11-02
  • 打赏
  • 举报
回复
操作系统里的子父进程,相当于递归,你自己看一下这个程序的其他部分
昵称很不好取 2010-11-02
  • 打赏
  • 举报
回复
下面的代码子进程和父进程都会去执行,根据fork的返回判断时父进程还是子进程

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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