Различный поток ввода / вывода для каждого разветвленного процесса - PullRequest
0 голосов
/ 17 февраля 2011

У меня есть некоторый код, где несколько процессов создаются путем разветвления.Каждый процесс имеет функцию popen () для выполнения какой-либо команды оболочки.Проблема в том, что все эти процессы используют один и тот же поток ввода / вывода.Это вызывает ситуацию, когда происходит конфликт из-за процессов, записывающих в один поток одновременно.

Есть ли способ решить эту проблему, чтобы каждый разветвленный процесс использовал свой собственный поток?В моем случае нельзя делать что-либо с разветвлением.

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Вам придется закрыть и снова открыть свой стандартный и стандартный вывод до или, если возможно, сразу после разветвления в дочернем процессе.

1 голос
/ 17 февраля 2011

Когда вы вызываете fork (), вы наследуете файловые дескрипторы (stdin, stdout и т. Д.) От родительского процесса. Когда вы открываете окно, оно берет общий stdin / stdout и направляет его в открытый процесс. Похоже, вы хотите закрыть все дескрипторы открытых файлов после разветвления и снова открыть их.

...