首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >forks及其功能?

forks及其功能?
EN

Stack Overflow用户
提问于 2012-12-10 06:08:38
回答 3查看 104关注 0票数 2

我有以下代码,并被要求打印多少次"A“、"B”、"C“、"D”、"E“

代码语言:javascript
复制
fun() {
  printf("A");
  fork();
  printf("B");
  if (fork() != 0) {
     printf("C");
     fork();
     printf("D");
  }
  printf("E");
}

所以它应该是:

代码语言:javascript
复制
A
A 
B
E

我不确定我上面的答案是否正确?那么if(fork() !=0 )这行代码做了什么呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-10 06:19:53

1个线程打印a,2个线程打印b。2个fork中的每一个,但只有2个父线程进入if语句并打印c。这两个fork中的每一个和所有4个procs都打印d。然后,6个procs中的每一个(来自if-fork的两个子线程和来自if的4个线程打印e。

您无法确定顺序,但每个字母的编号为:

一个x1

B x2

C x2

D x4

E x6

票数 4
EN

Stack Overflow用户

发布于 2012-12-10 06:12:04

documentation

如果成功,则在父进程中返回子进程的PID,在子进程中返回0。失败时,在父进程中返回-1,不创建子进程,并适当设置errno。

票数 6
EN

Stack Overflow用户

发布于 2012-12-10 06:17:22

if (fork() != 0) { ... }正在检查以确保当前进程不是原始派生进程的子进程。只有父进程才会执行此块中的代码。

这是因为fork()在父进程中返回PID,在子进程中返回0,在出错时返回-1。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13792363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档