【发布时间】:2018-12-10 20:40:22
【问题描述】:
我的 fork 功能有问题。是
cout << fork();
真的调用 fork() 吗? 我正在尝试制作流程树,但仍然不知道如何管理 fork() 函数。 我写了简单的代码来解决它,但它什么也没解释。
int mainPID = getpid();
cout << "Main process: " << mainPID << endl << endl;
cout << fork() << endl;
cout << getpid() << endl;
cout << getppid() << endl;
它返回: 118, 119, 120 程序结束并在屏幕 0、118、1 上获取另一个值 cout
【问题讨论】:
-
fork()完成时,您的程序有两个副本,所以当然它会运行两次。看到返回值0的是新创建的孩子,看到(孩子的)PID 号的是父母。 -
在我看来像 C++,而不是 bash。请正确标记您的问题。
-
这是一个坏主意,有两个原因:它不会产生有用的信息,它会告诉两个不同的进程同时写入同一个资源。