叉子的工作
Working of fork
本文关键字:工作 更新时间:2023-10-16
当我们使用fork时,调用一个函数创建一个进程并返回两个pid(一个是父id,另一个是子id)。一个函数怎么可能返回两个值?我不明白,叉子到底是怎么工作的?
不是一个函数返回两个值。这是一个函数调用返回两次,在每个进程中返回一次,并且在两次返回中,每次返回一个值。父进程返回子进程的PID,子进程返回0。
返回两次是创建新进程的基本机制。
fork()不返回两个值。Fork()只返回一个值,但是它返回两次。它在父进程中返回一次,在子进程中返回一次。
对于父进程,成功时返回子进程的进程id。对于子进程,fork返回0,如果子进程想知道自己的进程id,可以使用getpid(),如果想知道父进程id,可以使用getppid()。
在fork()系统调用之后,有两个独立的进程执行相同的程序文本,但是具有像堆栈,数据和堆这样的段的单独副本。fork()返回的pid有助于区分我们是在父进程还是子进程中。
pid_t processId;
switch(processId = fork())
{
case -1:
// Error. Handle error as fork() failed.
case 0:
// Do actions specific to child.
default :
// Do actions specific to parent.
}
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- C++中的memset函数工作不正常
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 链表c++插入,所有情况都已检查,但没有任何工作
- 为什么stream::忽略未按预期工作