繁体   English   中英

在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进行循环,或者说服其他程序的作者为您运行循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM