Перенаправление ввода и вывода дочернего процесса в C

Я хочу написать программу на c, в которой я создаю несколько дочерних процессов и перенаправляю их входные и выходные данные в разные файловые дескрипторы. Я много искал в Google, но не смог найти подходящих результатов. Пожалуйста помоги .


person mukesh    schedule 09.05.2011    source источник


Ответы (3)


Начните с dup. Вам действительно нужно поискать немного усерднее. Об этом много материала.

person Duck    schedule 09.05.2011

Ответ зависит от вашей операционной системы. В UNIX-подобных системах вы используете dup() и dup2() для копирования файловых дескрипторов; каждый дочерний процесс наследует текущий набор файловых дескрипторов от родительского, когда он exec-ed. Поэтому обычно вы fork дочерний процесс, устанавливаете файловые дескрипторы 0, 1 и 2 такими, какими вы хотите их видеть, а затем exec() фактическую дочернюю программу.

person Ernest Friedman-Hill    schedule 09.05.2011
comment
Поскольку использовались файловые дескрипторы фразы, я предполагаю, что это должен быть UNIX / Linux. Для полноты: в Windows используйте CreateProcess и посмотрите на последние три члена структуры STARTUPINFO. - person cdarke; 09.05.2011

Мне больше всего нравится forkpty. Эта функция разветвляет дочерний элемент и предоставляет вам файловый дескриптор для его stdin / stdout. Вы можете использовать exec после разветвления,

person eyalm    schedule 09.05.2011