【发布时间】:2015-12-16 21:15:43
【问题描述】:
我正在学习操作系统课程。 我目前正在研究流程管理这一章。
假设我这样写代码:
void main(){
int pid = fork();
// Some code goes here
}
这段代码基本上创建了一个子进程,它是父进程的副本。除了 PID 之外,进程之间的一切都是相同的。父进程到底是什么?是正在执行的 C 程序(运行 a.out 文件)吗?
【问题讨论】:
-
父进程是
fork返回大于零的值的进程。或者,父进程是getpid和getppid返回与fork之前相同的值的进程。或者,是进程可以使用wait来恢复子进程的退出状态。首先,父母和孩子之间没有其他区别。如果你真的在问“什么是过程?”这个问题。那么请澄清。 -
不,我知道什么是进程。让我困惑的是:进程,C程序本身在执行父进程吗?然后当我现在执行 fork() 时,有两个进程在执行中处理此代码
-
对不起,我无法理解“是进程,C 程序本身在执行父进程吗?”。每个进程都只有一个正在执行的程序(除非它是僵尸),但进程和程序是两个独立且无法比较的东西。 (而且,由于我怀疑这是您混淆的关键,任何数量 的进程都可以同时执行 same 程序。)
-
(用“a.out 文件”来识别“程序”,虽然在某些关键方面仍然不准确,但错误较少。)
标签: process operating-system fork