我的代码在 Linux 中看起来像这样:
return_code= spawnp(cmd, 3, fd_map, NULL, argv, environ);
我需要将其从 QNX 转换为 Linux - 所以我需要使用 fork-exec,因为 spawn 在 Linux 中不可用。 1)那怎么办?这是正确的吗 ?
pid = fork();
if (pid ==0) /* child */
exec(cmd, argv, environ);
2) 如何将 spawn 中传递的参数 fd_map 和“3”传递给 exec ?
最佳答案
我不知道“3”是做什么的。
如果你想改变子进程可用的文件描述符,你不会在调用 exec
或 fork
时这样做,但你可以通过调用 close
、dup2
等。函数 posix_spawn
基本上为您完成此操作,在 Linux/glibc 上,它是使用 实现的fork
和 exec
(所以你可以阅读源代码...)
pid = fork();
if (!pid) {
// close, dup2 go here
exec(...);
// error
}
关于linux - 在 C 中将调用从 spawn 转换为 fork-exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6590128/