fork()之后,for()循环中如何保持运行execve()?

After fork(), how to keep running execve() in for() loop?

这里是一个例子,忽略了错误检查:

int main()
{
    pid_t pid = fork();
    if(0 == pid)
    {
        for(int i = 0; i < 5; ++i)
        {
            char* const args[] = { "/bin/ls", nullptr };
            execve("/bin/ls", args, nullptr);
        }
    }
    else if(pid > 0)
    {
        wait(nullptr);
    }
}

如果在fork()之后执行exec(),据我所知,linux不会复制而是覆盖原来的系统。

如果我想像这样在 for() 循环中保留 运行 execve(),我应该怎么做?

exec(所有不同的形式)用提供给exec的可执行文件替换您当前的可执行文件,所以您在分叉中什么都不做代码很重要。您需要围绕 fork 进行循环,或者说服其他程序的作者 运行 为您进行循环。