微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

分叉和PID

代码

int main(void) { printf("pid: %dn",getpid()); pid = fork(); if (pid < 0) { fprintf(stderr,"Fork Failed!"); exit(-1); } else if (pid == 0) { execv("sum",argv); } else { printf(" pid: %dn",pid); wait(NULL); } }

输出

pid: 280 pid: 281

问题是:

为什么这两个PID不同。 我以为他们应该是相同的,因为父母是什么在执行else块和父母是什么在叉前执行,所以他们应该是相同的,不是?

如何循环通过标准input和pipe道输出到C儿童execl命令?

Linux叉子的目的?

Linux叉:pid重用

spawn和fork有什么区别?

如何产生不会与父母一起死亡的儿童stream程?

vfork永远不会返回

在Ruby中用双叉创build一个守护进程

如何写入pipe叉?

分叉系统调用的应用程序

在Linux中fork()的名字是什么意思?

返回值

成功时,子进程的PID将在父进程中返回,

并且在小孩中返回0。 失败时,-1在父项中返回,

没有创建子进程,并且适当地设置了errno。

所以,在父进程中,fork()返回创建的子进程的PID。

我不会重复nos的回答 ,因为他完全正确。 但是我会指出,任何程序都可以通过getpid系统调用来检索自己的PID。 所以叉子没有理由返回你自己的 PID。 相反,您可能想知道刚分叉过程的PID,如果它没有通过fork返回(父),可能很难获得。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐