问题描述
我有一系列流程,必须并行执行所有流程。由于进程数取决于数组的大小,我该如何执行此问题?我假设我必须使用fork()或线程,但是我不确定如何使用。在执行该过程后如何立即返回?谢谢!
解决方法
首先让我们弄清楚一些事情:
-
fork()在POSIX系统上,系统调用将一个进程分为两个。子进程将由返回码0指示,父进程将由子进程的Pid指示(在创建/执行/死亡子进程时立即返回)。除此之外,两者本质上是相同的,这意味着孩子需要执行特定的子处理(通常通过execve()来执行另一个二进制程序),而父对象wait4()则是孩子。另一种选择是不使用wait4(),而是监听在子终止时发送的SIGCHLD。
-
多个线程都在同一进程中发生。这意味着子处理是由相同地址空间中的代码块/功能执行的。
您的问题尚不清楚-因此-如果进程数组本质上是命令行数组,则可以使用上面的fork()和execve()。如果是函数数组,请使用线程。