c - C 中的 fork() 流程

标签 c multithreading fork

我在理解 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/

相关文章:

c# - 将(多个)文件复制到多个位置

ios - Swift 3 多线程使用哪个队列?

c++ - boost::future::then() 不返回阻止销毁的 future

c - 无法使用管道作为 C 中 grep 的输入

c - 为什么我必须在 &ip_reply->saddr 中使用 "&"

c - 如何使用内核模块直接访问保留内存?

C 编程如何在以下代码中正确使用 if 语句和字符串?

c - 为什么 struct stat 中的 st_size 字段是有符号的?

c - 让 children 等待直到收到 parent 的信号

c - fork() 使用不当?