перенаправить процесс, запущенный с execv, в / dev / null

У меня есть программа, которая forks(), и дочерний процесс заменяется другим процессом, скажем, A, который выполняется через вызов execv(A),

Как мне перенаправить процесс Aвыход в /dev/null??

Я до сих пор пробовал:
(Части ошибки дескриптора позаботятся, и ошибки не возникнет)

    pid = fork();
//check for errors
if (pid<0){
//handle error
}
//the child process runs here
if (pid==0){
fd = open("/dev/null", O_WRONLY);
if(fd < 0){
//hadnle error
}
if ( dup2( fd, 1 )  != 1 ) {
//handle error
}
if (execv(lgulppath.c_str(),args)<0){
//handle error
}
}

Однако это, понятно, не работает, так как перенаправляет вывод дочернего процесса в /dev/null а не процесс A, потом заменить ребенка, выходной.

Есть идеи?
(У меня нет кода AПроцесс)

Спасибо

1

Решение

Возможно, что процесс A пишет в stderr вместо stdout,

Тогда вы должны dup2(fd, 2) вместо.

Если процесс А пишет в stdout а также stderr, Вы должны dup2() и то и другое:

if (dup2(fd, 1) < 0) {
// error handling
}

if (dup2(fd, 2) < 0) {
// error handling
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector