Как уловить std-output программы, созданный другой программой?Linux

Ответить
Anonymous
 Как уловить std-output программы, созданный другой программой?

Сообщение Anonymous »

У меня есть двоичный исполняемый файл для Linux, скажем, «Myecho», который считывает свои аргументы из командной строки и повторяет их на стандартном выходе.

тогда я пишу еще один бинарный исполняемый «LIBC» или другие C-ливерри), скажем, его название «MyProg». Я хочу, чтобы он породил «myecho» с использованием функции ядра sys_execve < /em>
и я хочу захватить стандартный выход "MyeCho" в файл "Сообщения.txt" для дальнейшей обработки.

Я не знаю, как сказать, что «MyeCho» перенаправляет свой вывод в файл. < /p>

Код: Выделить всё

myprog program
[.data]
Par1        DB "Param1",0
Par2        DB "Param2",0
Par3        DB ">messages.txt",0
Env1        DB 0 ; Not used.
Command     DB "/path/to/myecho",0
Parameters  DD Par1,Par2,Par3,0
Environment DD Env1
[.text]
; Execute "myecho" from "myprog":
MOV EAX,11          ; Kernel # of "execve" in 32bit Linux.
MOV EBX,Command     ;
MOV ECX,Parameters  ;
MOV EDX,Environment ;
INT 0x80
< /code>
Я ожидал, что строка execve'd будет чем -то вроде < /p>
 /path/to/myecho Param1 Param2 >messages.txt
< /code>
Но, кажется, не работает так. Оператор перенаправления> 
с ^ или с ESC :
Par3 DB "^>messages.txt",0
Par3 DB 27,">messages.txt",0
< /code>
Но без успеха.
Возможно, мне нужно будет породить "myecho" с Fork
вместо Execve
и использовать Tee для трубы, но но Я не знаю, как подключить выходные данные "Myecho" к дескрипторам файлов "tee". его вывод в файл, а затем обработайте этот вывод в «myprog»?

Подробнее здесь: https://stackoverflow.com/questions/794 ... er-program
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»