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

时间:2012-11-20 09:56:58

标签: c++ linux execv dev-null

  

可能重复:
  redirecting output to a file in C

我正在按如下方式运行流程:

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

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

/dev/null

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

任何人都知道吗?

由于

1 个答案:

答案 0 :(得分:1)

首先打开您想要的目标,然后关闭您想要的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 );