Как я могу использовать fprintf и писать в канал? - PullRequest
8 голосов
/ 16 марта 2009

Я создал канал и использовал dup2 () для перезаписи потоков 1 и 2 (stdout & stderr) в эти каналы.

Теперь я хочу использовать fprintf для записи в поток 1 или 2, но моя программа, похоже, не получает ничего на другой стороне канала. Я пытался использовать printf (), но я не уверен, что это пишет в стандартный вывод или поток 1 по умолчанию. Если он пишет в поток 1, я думаю, это проблема где-то в моем коде.

По сути, я спрашиваю, учитывая int, представляющий поток, как я могу получить FILE *, подходящий для использования в fprintf ()?

1 Ответ

7 голосов
/ 16 марта 2009

Если у вас есть файловый дескриптор и вы хотите FILE*, вы можете использовать fdopen

FILE *fdopen(int fd, const char *mode);

fdopen - это функция Posix, задокументированная в man fdopen. Для обратного вы можете использовать fileno

...