У меня есть сообщение, сгенерированное вызывающей стороной exec()
или system()
или popen()
, и я хочу передать его дочернему процессу. Изменить env можно одним способом, но в многопоточной программе изменение env на putenv()
или setenv()
небезопасно. Я не могу пройти через argv
дочернего процесса.
Запись чего-либо в какой-либо файл является одним из вариантов, но как мы можем определить, какое конкретное сообщение передается от какого родителя и предназначено для какого потомка? Одним из способов является добавление родительского pid к сообщению, и ребенок может найти сообщение с соответствием ppid. Но когда несколько потоков вызывают popen()
, будет несколько сообщений с одинаковым pid.