Перенаправить вывод процесса, запущенного execv

Возможный дубликат:
перенаправление вывода в файл в С

Я запускаю процесс следующим образом:

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

Вопрос в том, как я могу заставить его перенаправить вывод на

/dev/null

Я попытался добавить его в массив аргументов, но он отправил его в качестве аргументов в программу...

Любая идея?

Спасибо


person Alon_T    schedule 20.11.2012    source источник
comment
см. также stackoverflow.com/a/12764581/85371.   -  person sehe    schedule 20.11.2012


Ответы (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 ); 
person James Kanze    schedule 20.11.2012