Главная

Запуск скрипта, перенаправление вывода.

Подскажите способ запустить внешний скрипт, так чтобы результат его вывода можно было перенаправить в файл(строку и т.п.)

Re(2):Запуск скрипта, перенаправление вывода.

А вот это не подоёдёт?

MyScript >> ~/output.txt

Если ничего не напутал, то в файле /boot/home/output.txt будет результат вывода скрипта MyScript.

Re(3):Запуск скрипта, перенаправление вывода.

должно быть одиночная стрелка >.

Re(9):Запуск скрипта, перенаправление вывода - код:

filedes[2], filedes2[2]; // pipes descriptors

pipe(filedes); //creating pipe

if ((ps_id_cat=fork())==0) // implementing fork and checking that we are in child process
{
dup2(filedes[0],fileno ( stdin)); // if in child — replacing stdin with pipe
pipe(filedes2);
if ((ps_id_smpeg=fork())==0) // implementing fork and checking that we are in child process
{
dup2(filedes2[0],fileno ( stdin));
atexit(bye);
execvp(«smpeg», argsmpeg); //calling cat and smpeg — it seems that with 'cat' occurs weirdnes — sometimes it works
exit(1) ; //sometimes dont
}
else
{
dup2(filedes2[1],fileno ( stdout));
atexit(bye);
execlp(«cat», “cat”, NULL);
exit(1);
}
}
else
dup2(filedes[1],fileno ( stdout)); //if in parent — replace stdout with pipe

Что тут делается. — VCDplay читает с диска файл, обрабатывает — направляет якобы в стандартный выход, на самом деле в трубу (pipe).
Это тебе еще не очень интересно.
Дальше, чтобы обойти некие глюки BeOS, вместо того чтобы направить трубу напрямую на стандартный вход программы smpeg, запускается шелловская команда “cat”
и ее стандартный вход соединяется со стандартных выходом vcdolay, а стандартный выход — со стандартных входом программы smpeg.

Так что кроме перечисленных тебе надо еще посмотреть
man fork.

Re(10):Запуск скрипта, перенаправление вывода - код:

да, впереди еще была декларация
int ps_id_cat, ps_id_smpeg, mpg_arg_cnt;

Re(11):Запуск скрипта, перенаправление вывода - код:

Понятно. Сам я сделал это через popen.

char buffer[512];
in = popen(«script»,"r");
while( fgets(buffer,512,in) )
printf("%s",buffer);
pclose(in);

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Allowed HTML tags: <a> <em> <i> <img> <strong> <b> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

CAPTCHA
Введите перечисленные символы, чтобы мы убедились, что вы не робот. Не требуется для зарегистрированных пользователей.
m
U
D
d
u
F
Enter the code without spaces and pay attention to upper/lower case.