Есть ли способ наполовину закрыть дескриптор файла FILE *? - PullRequest
1 голос
/ 05 октября 2019

Моя ситуация такова: в MacOS / X я вызывал AuthorizationExecuteWithPrivileges , чтобы порождать привилегированный дочерний процесс, и единственный способ связаться с дочерним процессом - это вызвать fread() и/ или fwrite() в FILE * дескрипторе файла, возвращенном мне последним аргументом этого вызова.

Что я хочу сделать, это указать дочернему процессу, что он должен завершиться, что я могусделать, вызвав fclose() в дескрипторе файла - дочерний процесс видит, что его STDIN_FILENO закрылся, и отвечает, завершив работу.

Однако я также хочу иметь возможность читать любой текст, который дочернийпроцесс выводится в поток stdout перед выходом, но вызов fclose() в дескрипторе файла не позволяет этого сделать.

Поэтому мой вопрос, есть ли способ "полузакрыть" FILE *, такой, что становится закрытым для записи, но все еще открытым для чтения? Я представляю что-то аналогичное shutdown (SHUT_WR) , которое можно использовать в дескрипторе сокета.

...