linux - 在 C 中将调用从 spawn 转换为 fork-exec

标签 linux qnx

我的代码在 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”是做什么的。

如果你想改变子进程可用的文件描述符,你不会在调用 execfork 时这样做,但你可以通过调用 closedup2 等。函数 posix_spawn 基本上为您完成此操作,在 Linux/glibc 上,它是使用 实现的forkexec(所以你可以阅读源代码...)

pid = fork();
if (!pid) {
    // close, dup2 go here
    exec(...);
    // error
}

关于linux - 在 C 中将调用从 spawn 转换为 fork-exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6590128/

相关文章:

c++ - 如何从 linux C++ 应用程序访问 SQL 服务器?

linux - 如何从 Linux 内核镜像获取 .config?

c - Linux 控制台键盘处理程序

QNX SDK 适用于 MAC

c++ - 线程在 while 循环中间随机停止

c++ - 在 PCL 构建中关闭 Eigen Alignment

c++ - 如何编写 CanOpen 堆栈?

java - 合并两个经过 OCR 训练的数据

linux - Squid3 用户验证但没有数据服务器

c++ - 在QNX中,如何管理服务器和客户端之间的IPC连接?