在fork()之后,如何在for()循环中继续运行execve()?

时间:2017-04-06 06:35:15

标签: c++ linux loops fork execve

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

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(),我该怎么办?

1 个答案:

答案 0 :(得分:1)

exec(所有不同的形式)替换为exec给出的当前可执行文件,因此在分叉代码中执行的操作无关紧要。你需要绕fork循环,或说服其他程序的作者为你运行循环。