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

关于fork()的问题

    来源: 互联网  发布时间:2016-09-06

    本文导语:  #include  int main ( int argc, char *argv[] ) { int ret_form_fork, mypid; mypid = getpid(); printf("Before: my pid is %dn", mypid); ret_form_fork = fork(); sleep(1); printf("after: my pid is %d, fork() said %dn", getpid(), ret_form_fork); return 0; } /* -...

#include 
int main ( int argc, char *argv[] )
{
int ret_form_fork, mypid;

mypid = getpid();
printf("Before: my pid is %dn", mypid);

ret_form_fork = fork();

sleep(1);
printf("after: my pid is %d, fork() said %dn", getpid(), ret_form_fork);
return 0;
} /* ----------  end of function main  ---------- */

以上这个代码,我感觉应该父进程的after先输出阿,怎么结果是子进程的先输出阿,执行结果为:
Before: my pid is 2081
after: my pid is 2082, fork() said 0
after: my pid is 2081, fork() said 2082
和我的感觉,以及书上的结果不一样

第二个问题
#include 
#include 
#include 
#include 

int
main ( int argc, char *argv[] )
{
pid_t pid;
char *message;
int n;

printf("fork program startingn");
pid = fork();

switch( pid )
{
case -1:
perror("fork error!n");
exit(1);
case 0:
message = "child process";
n = 5;
break;
defult:
message = "parents process";
n = 3;
break;
}
for (; n > 0; n--)
{
puts(message);
sleep(1);
}
return 0;
} /* ----------  end of function main  ---------- */

这一个简单的代码对于parents process这句,总是输出乱码,这么不理解呢。

小弟初学,感觉这个都很简单,怎么一在电脑上实践都是问题呢。。。

|
第一个问题,为什么“感觉应该父进程的after先输出”?
fork先在父进程返回还是先在子进程返回,是不确定的。
那个sleep,父进程和子进程都会执行,所以貌似没什么作用。

|
你这个代码就是有竞争条件阿。
参考 APUE 第二版 第八章的介绍

|
        break;
    defult: // ??????
        message = "parents process";

|
gcc把defult当成了一个标号

$ gcc -Wall test.c
test.c: In function âmainâ:
test.c:26: warning: label âdefultâ defined but not used

要是再在什么地方加一个goto defult  那就连这个警告都没有了

代码贴出来关键字比如case和break都是蓝色的,default也会是蓝色的

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 奇怪:程序一fork子进程时就停住了,似乎根本不能fork子进程啊?
  • unix中的fork2与fork有设么区别?
  • 程序在fork前申请了内存若干,在fork后子进程是否需要释放父进程之前申请的内存
  • 如何理解fork函数返回2次啊?
  • 急于明白Fork的用法.请提供中文解释.谢谢.
  • 关于fork的不解
  • 弱弱的问:fork和exec的区别是什么?
  • 关于fork的讨论
  • 关于fork的疑问?
  • fork之后的输出
  • exit和fork是什么关系?他们是怎么配合使用的?
  • fork函数,在线等待,马上结贴。谢谢!!!!!!!!!!!!
  • 请教 linux的fork从什么版本开始支持COW?
  • c++ 和 fork
  • "fork(2)" 中这个2表示什么意思
  • fork函数的源代码在哪呢
  • 关于fork函数
  • fork函数的理解。。
  • linux的fork()函数
  • 创建一个子进程,什么时候该用clone()而不是fork()?


  • 站内导航:


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

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

    浙ICP备11055608号-3