重定向由execv运行的进程的输出

Redirect output of process ran by execv

本文关键字:进程 输出 运行 execv 重定向      更新时间:2023-10-16

可能的重复项:
将输出重定向到 C 中的文件

我正在运行一个进程,如下所示:

char* [NUM];
char[0] = processName;
char[1] = arg0;
...
char[NUM] = 0;
execv(args[0],args);

问题是我如何让它将其输出重定向到

/dev/null

我尝试将其添加到 args 数组中,但它将其作为参数发送到程序......

有人知道吗?

谢谢

首先打开所需的目标,然后关闭所需的fd重新分配,使用 dup2 将其连接到那里,然后关闭上一个打开:

int tmpFd = open( "/dev/null", O_WRONLY );
if ( tmpFd == -1 ) {
    //  Real problem, couldn't open /dev/null
}
if ( dup2( tmpFd, 1 ) ) != 1 ) {
    //  Real problem, dup2 failed.
}
close( tmpFd );