我想创建一个使用fork()创建新进程的程序。示例输出应如下所示:fork()子进程和父进程
这是子进程。我的pid是733,父母的ID是772.
这是父进程。我的pid是772和我的孩子的id是773
这是我如何编码的我的程序:
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("This is the child process. My pid is %d and my parent's id is %d.\n", getpid(), fork());
return 0;
}
这将导致输出:
这是孩子的过程。我的pid是22163,父母的ID是0.
这是子进程。我的pid是22162,我的父母的编号是22163.
为什么打印语句两次,以及如何在第一个句子显示子标识后正确显示父母的ID?
编辑:
#include <stdio.h>
#include <stdlib.h>
int main() {
int pid = fork();
if (pid == 0) {
printf("This is the child process. My pid is %d and my parent's id is %d.\n", getpid(), getppid());
}
else {
printf("This is the parent process. My pid is %d and my parent's id is %d.\n", getpid(), pid);
}
return 0;
}
您的程序不会尝试在任何地方打印单词“父进程”。它们不在节目文本中,你为什么期望它们被打印? –
'人叉'。阅读。理解单词。如果您没有任何方法可以自己查找答案,请转到StackOverflow。你将成为这种体验的更好的程序员。 – asveikau
另外,'fork'不会将父进程ID返回给子进程。它返回0给孩子和孩子的ID给父母。这就是你如何知道哪个是哪个。 –