这是一个例子,忽略了错误检查:
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(),我该怎么办?
答案 0 :(得分:1)
exec
(所有不同的形式)将替换为exec
给出的当前可执行文件,因此在分叉代码中执行的操作无关紧要。你需要绕fork
循环,或说服其他程序的作者为你运行循环。