我在理解 fork() 的执行流程时遇到了一些困难。我的主要问题是,当调用 fork() 时,调用进程是暂停执行流程,还是继续执行?这是我正在做的事情的示例
for (i = 0; i < hosts; i++)
{
if (fork() == 0)
{
forward_data(client_sock, remote_sock[i]);
}
}
这里我使用 fork() 函数创建单独的进程来处理远程主机之间的连接。函数forward_data()将数据从client_sock发送到remote_sock,我正在设计程序同时发送到多个主机。
最佳答案
fork()
将复制该进程,并且两个进程(原始进程和克隆进程)都将从那里继续执行,唯一的区别是在父进程中,fork()
code> 将返回创建的新进程的 PID(如果出错则返回 -1),而在子进程中 fork()
将返回 0。
它并不完全算作多线程,因为一旦发生这种分割,进程就不再位于同一虚拟内存空间中。
关于c - C 中的 fork() 流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24657682/