回答
父母拥有进程组,从而产生和收获孩子。通常这个过程会做一点行政工作,而孩子们则扮演同龄人和兄弟姐妹。
虽然命名只是描述哪个进程产生了另一个进程的约定。
也有一些情况,它不仅是约定。例如,如果调用进程不是传递'pid'的父进程,'waitpid()'拒绝工作,返回'ECHILD'错误。 –
@ mike.dld是的,这就是我的产卵和收获。在一个蹩脚的设备上键入:)请随时编辑答案是更彻底或写出一个,我会删除:) –
父进程和子进程根据您的代码完成工作,但不是因为父或子关系。当你在主线程中执行fork()时,它将创建一个子进程,在这里fork返回一个在父进程和子进程中不同的值,它可以用来区分父进程和子进程的工作。 fork()总是在父进程中返回子进程的pid,在子进程中返回0。
即将到来的第二个问题是,调用fork()后,它总是依赖于调度程序,并且我们无法预测fork()函数调用后哪个进程首先运行。
是否有一个特定的原因背后调用他们的父进程和子进程?
那么,因为它创建第二个(子)的一个进程(父),这可能是命名的推理。
另外,父进程是否总是在子进程之前运行?
简短的回答。不。 我在我所有的C代码一直在使用这个
pid_t pid = fork();
if(pid == 0){ // child
// Child stuff
}else{ // parent
// Parent stuff
}
您可能还需要使用
waitpid(pid, NULL, 0);
fork()
创建当前过程的副本是的一部分过程控制组。新进程从属于初始进程,例如当进程死亡时,将SIGCHLD发送给父进程。此外,克隆是一个劣质的副本:例如,任何存储的getpid()
结果将在孩子中不准确;孩子有不同的parentid
,孩子有拷贝父母的文件描述符,并有独立的资源使用计数器。
然后,父进程始终是致电fork()
的那个进程,如果这就是您先运行的意思。如果你的意思是“调度程序总是先给父进程片”,那么答案是否定的。
参见:http://gauss.ececs.uc.edu/Courses/c694/lectures/ForksThreads/forks.html,http://linux.die.net/man/2/fork
#include <stdio.h>
#include <unistd.h>
int main(int argc, const char* argv[])
{
pid_t otherPid;
printf("parent pid = %u\n", getpid());
otherPid = fork();
// in the parent, otherPid = the child's (new) process ID
// in the child, otherPid = 0.
switch (otherPid) {
case -1:
printf("Fork failed: %d\n", errno);
return errno;
break;
case 0: // child
sleep(2);
printf("child: my pid is %u\n", getpid());
break;
default:
printf("parent: pid is %u, child should have %u\n", getpid(), otherPid);
sleep(3);
break;
}
return 0;
}
父母总是孩子之前。分类和甜蜜!
这不提供问题的答案。要批评或要求作者澄清,在他们的帖子下留下评论 - 你总是可以评论你自己的帖子,一旦你有足够的[声誉](http://stackoverflow.com/help/whats-reputation),你会能够[评论任何帖子](http://stackoverflow.com/help/privileges/comment)。 – quetzalcoatl
问题是“父进程是否真的在子进程之前运行?”所以我重新排序。 – Amit
不,问题是“是否有将其称为父进程和子进程的特定原因?”。请尝试阅读全文,不仅是标题和结尾。你刚才引用的问题是一个侧面问题。你的回答,如果它是一个预期的答案(而不仅仅是半开玩笑 - 半真相),还不清楚。试着详细阐述一下。如果你的意思是“在...之前”,就社会/进化论的参考而言 - 写出来。如果你的意思是“之前”的“观看/保护” - 写它。如果你不想长时间写清楚 - 如果已经有很好的答案,为什么要写? – quetzalcoatl
- 1. 父母和孩子在Css
- 2. 父母和孩子的向量C++
- 3. XQuery的父母和孩子
- 4. C#-Threads和父母传递给孩子
- 5. 孩子和父母对象
- 6. has_many孩子和has_many父母
- 7. 父母/孩子和叉子查询介绍(Perl)
- 8. C程序 - 如何让孩子的孩子PID在父[后叉]
- 9. C叉两个孩子和父母与子女之间的管道
- 10. 有趣的父母和孩子的行为,而这样做叉
- 11. 文件描述符 - 父母和分叉的孩子
- 12. 跟踪父母的孩子,或跟踪孩子的父母?
- 13. SQL JOIN父母和孩子和GET父母和孩子记录计数
- 14. 孩子父母一般皈依在C#
- 15. MDI父母孩子
- 16. Maven父母和孩子们在Intellij
- 17. 建模父母和孩子在Rails 4
- 18. 在父母和孩子逻辑
- 19. 在C中绘制父母和父母孩子的自定义背景#
- 20. 叉子()和父母/子女过程
- 21. JavaScript的父母和孩子的窗口
- 22. JQuery的父母和孩子的选择
- 23. WordPress的,is_page的父母和孩子
- 24. 选择孩子的父母
- 25. 循环父母记录其次是孩子,父母和孩子等
- 26. 父母和孩子的ArrayList。不抽象
- 27. 父母和孩子的过程控制
- 28. 父母和孩子的尺寸计算
- 29. 由父母和孩子的Mysql秩序
- 30. 父母和孩子的css关系?
不确定这个问题的第二部分是什么意思。谨慎阐述? –
1.孩子是由父母创建的。 2.没有。 – moeCake
@ mike.dld我有一个代码,只是打印“父母”和“孩子”为每个相应的进程,并且“父母”总是首先打印? – Pig