LINUX.ORG.RU

C: вызов execvp с перенаправлением вывода


0

0

Добрый день!
подскажите пожалуйста, как вызвать шел-скрипт из execvp так, чтобы от перенаправил вывод ошибок в мой лог-файл?
Попробовал следующие 2 вариана, которые exec назвал ошибочными:

char* args[] = {"sh", "myscript", "2>>mylog", NULL};
execvp(args[0], args);
...
char* args[] = {"sh", "myscript", NULL};
execvp("sh 2>>mylog", args);

Спасибо!

Re: C: вызов execvp с перенаправлением вывода

man popen

sS ★★★★★ ()

Re: C: вызов execvp с перенаправлением вывода

вариант 1: использовать system("myscript>>mylog)"
вариант 2: использовать dup2
  в псевдокоде :
  открыть mylog 
  закрыть stderr
  сдублировать mylog на stderr
  exec myscript

сорри, писать реальный код некогда,ломает и вредно читающим:)

MKuznetsov ★★★★★ ()
Ответ на: Re: C: вызов execvp с перенаправлением вывода от MKuznetsov

Re: C: вызов execvp с перенаправлением вывода

>вариант 1: использовать system("myscript>>mylog)"
>вариант 2: использовать dup2

Во велосипедисты ;)

Вы там еще не весь POSIX переписали на своих велосипедах ? ;)

sS ★★★★★ ()

Re: C: вызов execvp с перенаправлением вывода

sS: подсказанная Вами функция popen делает не совсем то, что просил автор треда

"The popen() function executes the command specified by the string command. It creates a pipe between the calling program and the executed command, and returns a pointer to a stream that can be used to either read from or write to the pipe."

Single UNIX Spec.

MKuznetsov ★★★★★ ()

Re: C: вызов execvp с перенаправлением вывода

>char* args[] = {"sh", "myscript", "2>>mylog", NULL};

char* args[] = {"sh", "-c", "exec myscript 2>>mylog", NULL};

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.