Как я могу использовать fprintf и писать в канал?

StackOverflow https://stackoverflow.com/questions/650468

  •  19-08-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

man fdopen является функцией Posix и задокументирована в <= >. Чтобы сделать обратное, вы можете использовать fileno

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top