我有以下代码:
pid_t pid;
char *argv[] = {"execpath", NULL};
int status;
extern char **environ;
status = posix_spawn(&pid, "execpath", NULL, NULL, argv, environ);
如何将子进程 STDOUT
重定向到 /dev/null
?
最佳答案
我已将 posix_spawn_file_actions_t
添加到您的示例中,并在我的机器上验证了输出被重定向到/dev/null。
#include <sys/types.h>
#include <stdio.h>
#include <spawn.h>
#include <unistd.h>
#include <fcntl.h>
int main(int argc, char ** argv) {
posix_spawn_file_actions_t action;
posix_spawn_file_actions_init(&action);
posix_spawn_file_actions_addopen (&action, STDOUT_FILENO, "/dev/null", O_WRONLY|O_APPEND, 0);
pid_t pid;
char *arg[] = {"execpath", NULL};
int status;
extern char **environ;
status = posix_spawn(&pid, "execpath", &action, NULL, argv, environ);
posix_spawn_file_actions_destroy(&action);
return 0;
}
编辑:添加了 MCVE 示例以供完整引用。
关于c - 如何将 posix_spawn 标准输出重定向到/dev/null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32049807/