当前位置:  技术问答>linux和unix

关于fork函数的疑问

    来源: 互联网  发布时间:2015-11-20

    本文导语:  int main() { pid_t child; child = 1; if((child =fork()) == -1) { } else if(child == 0) { puts("in child"); printf("tchild pid = %dn",getpid()); printf("tchild ppid = %dn",getppid()); } else {puts("in parent"); printf("tparent pid = %dn",getpid()); printf("tparent...

int main()
{
pid_t child;
child = 1;
if((child =fork()) == -1)
{
}
else if(child == 0)
{
puts("in child");
printf("tchild pid = %dn",getpid());
printf("tchild ppid = %dn",getppid());
}
else
{puts("in parent");

printf("tparent pid = %dn",getpid());
printf("tparent ppid = %dn",getppid());

不知道子进程是怎么样运行的,也不知道child什么时候会等于0,刚学linux,望大家多多指点!

}

 exit(EXIT_SUCCESS);
}

|
看了man fork了吗?

|
子进程里child就是0了。
执行结果很正常,内核调度父子进程的顺序不一样,所以输出的顺序不一样。第二个结果也正常,父进程退出时已经到提示符了,只不过子进程输出时搞乱了显示,不需要ctrl+c,回车就可以了。

|
内核调度任务的方式有关。
把输出定位到文件里
一切就清楚了

|
从fork返回0开始。

|
再fork一次

|
fork这个东东要自巳慢慢去领会的,听别人说一下,只知其形,不知其神,慢慢来吧

|
int main()
{

//test fork function
pid_t child,i,j;
child = 1;
i=3;
child =fork();
j=4;

 if(child == 0)
{
puts("in child");
printf("ti = %dn",i);
printf("tchild = %dn",child);
printf("tj= %dn",j);
printf("tchild pid = %dn",getpid());//这个时候已经在子进程里面了,getpid得到的自然是自己的pid了
printf("tchild ppid = %dn",getppid());
}
else
{puts("in parent");

printf("ti = %dn",i);
printf("tchild = %dn",child);
printf("tj= %dn",j);
printf("tparent pid = %dn",getpid()); //getpid 显示的是自己的pid,你的printf里面乱写啊.能不把自己搞糊涂了么?
printf("tparent ppid = %dn",getppid());//getppid 显示的是父进程的pid
}

 exit(EXIT_SUCCESS);
}
结果:
[root@zhangyong develop]# ./study
in child
        i = 3
        child = 0
        j= 4
        child pid = 3686
        child ppid = 3685
in parent
        i = 3
        child = 3686
        j= 4
        parent pid = 3685
        parent ppid = 3268

所以你在用这个函数以前,先明白这些函数的作用,这样自己就不会糊涂了

    
 
 

您可能感兴趣的文章:

  • 还是有关fork的问题,fork在一个函数中调用,我被搞胡涂了
  • 如何理解fork函数返回2次啊?
  • fork函数的源代码在哪呢
  • linux的fork()函数
  • minGW编译带fork函数的问题?
  • Linux fork() 函数
  • 关于fork()函数
  • fork函数的理解。。
  • Linux下关于fork()的函数 iis7站长之家
  • 关于fork函数
  • fork函数详解?
  • fork函数的处理流程
  • 执行一个main函数程序时,unix操作系统调用什么创建进程?fork?newproc?
  • Linux下关于fork()的函数
  • 谁有unix下c的编程接口资料,如fork函数和killppid的说明
  • Linux fork函数的系统调用实现过程是什么呢?
  • linux fork 函数问题
  • 费解呀,函数fork()的疑惑?
  • 怎么理解fork()函数返回两次值?
  • linux fork()函数的疑惑
  • 关于fork的疑问?
  • fork()的疑问
  • linux中fork函数对于子进程地址空间的一点疑问
  • 关于fork 的一点疑问...
  • fork的疑问
  • 关于 fork 管道通信的疑问
  • 对于fork的一点疑问,麻烦高手看看,谢谢~
  • 一个简单的关于fork()的代码疑问
  • 关于fork()和sleep()程序的疑问,请高手指点
  • linux中用fork启动新进程后,我有一些疑问!请大家帮忙解释下!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 奇怪:程序一fork子进程时就停住了,似乎根本不能fork子进程啊?
  • unix中的fork2与fork有设么区别?
  • 程序在fork前申请了内存若干,在fork后子进程是否需要释放父进程之前申请的内存
  • 一个fork的问题
  • 新手的问题关于fork?
  • 急于明白Fork的用法.请提供中文解释.谢谢.
  • 关于fork的不解
  • 弱弱的问:fork和exec的区别是什么?
  • 关于fork的讨论
  • fork之后的输出
  • fork() 父子进程执行顺序问题
  • 关于fork创建进程的一个问题
  • exit和fork是什么关系?他们是怎么配合使用的?
  • fork的问题
  • 请教 linux的fork从什么版本开始支持COW?
  • c++ 和 fork
  • 请教一个关于fork的问题。
  • "fork(2)" 中这个2表示什么意思
  • 创建一个子进程,什么时候该用clone()而不是fork()?
  • 一个简单的fork问题(那个高手来帮忙呀)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3