Моя ситуация такова: в MacOS / X я вызывал AuthorizationExecuteWithPrivileges , чтобы порождать привилегированный дочерний процесс, и единственный способ связаться с дочерним процессом - это вызвать fread()
и/ или fwrite()
в FILE *
дескрипторе файла, возвращенном мне последним аргументом этого вызова.
Что я хочу сделать, это указать дочернему процессу, что он должен завершиться, что я могусделать, вызвав fclose()
в дескрипторе файла - дочерний процесс видит, что его STDIN_FILENO
закрылся, и отвечает, завершив работу.
Однако я также хочу иметь возможность читать любой текст, который дочернийпроцесс выводится в поток stdout
перед выходом, но вызов fclose()
в дескрипторе файла не позволяет этого сделать.
Поэтому мой вопрос, есть ли способ "полузакрыть" FILE *
, такой, что становится закрытым для записи, но все еще открытым для чтения? Я представляю что-то аналогичное shutdown (SHUT_WR) , которое можно использовать в дескрипторе сокета.