Мой вопрос является продолжением этого: popen создает дополнительный процесс sh
Мотивы:
1) Моя программа должна создать дочерний элемент, который выполняет tail
в файле. Мне нужно обработать вывод построчно. Вот почему я использую popen
, потому что он возвращает ФАЙЛ *. Я могу легко получить одну строку, сделать то, что мне нужно, и распечатать ее.
Одна проблема с popen заключается в том, что вы не получаете pid дочернего элемента (команда tail в моем случае).
2) Моя программа не должна завершаться до завершения ее дочернего элемента. Так что мне нужно сделать wait
; но без pid я не могу этого сделать.
Как я могу достичь обеих целей?
Возможное (запутанное) решение: выполните execvp("tail -f file > tmpfile") и продолжайте читать этот tmpfile. Однако я не уверен, насколько хорошо это решение.