【问题标题】:After fork(), how to keep running execve() in for() loop?fork() 之后,如何在 for() 循环中继续运行 execve()?
【发布时间】:2017-09-01 00:42:00
【问题描述】:

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

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

【问题讨论】:

标签: c++ linux loops fork execve


【解决方案1】:

exec(所有不同的形式)将您当前的可执行文件替换为exec 提供的可执行文件,因此您在分叉代码中所做的任何事情都无关紧要。您需要围绕fork 进行循环,或者说服其他程序的作者为您运行循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-07
    • 2015-05-27
    • 2016-07-01
    • 1970-01-01
    相关资源
    最近更新 更多