LINUX.ORG.RU

Вопрос по pipe

 ,


0

2

Подскажите пожалуйста, можно ли читать и писать в файлы, создаваемые функцией pipe с помощью средств c++? Нашел примеры только для c, т.е. используя функции read и write.


можно ли читать и писать в файлы, создаваемые функцией pipe с помощью средств c++?

т.е. используя std::ifstream/std::ofstream? - нет, нельзя, ибо эти классы не конструируются с передачей существующего дескриптора.

Нашел примеры только для c, т.е. используя функции read и write.

так используй read()/write() в с++ коде. в чем проблема?

niXman ★★★
()
Последнее исправление: niXman (всего исправлений: 1)

используя функции read и write

кто или что запрещает использовать их с С++ ? afaik загнать файловый дескриптор в С++ поток нельзя.

x0r ★★★★★
()
Ответ на: комментарий от niXman

да, именно это и хотел узнать. Проблема в том, что всегда раньше использовал cout, cin и слабо представляю как пользоваться этими функциями. Допустим, я легко могу записать в pipe n символов и считать тоже n символов. А если мне нужно передавать не фиксированный текст? Т.е. размер при каждом запуске программы может быть разным. Как узнать, сколько символов считывать? Записывать эту информацию тоже в pipe?

gwyllum
() автор топика

Для C++ такого не встречал. Но можно использовать fprintf() и подобные если открыть FILE * используя fdopen(), которая доступна на большинстве *nix-систем (определена POSIX).

xaizek ★★★★★
()
Ответ на: комментарий от gwyllum

read() считывает не n символов, а не более, чем n символов

NeXTSTEP ★★
()

Можно попробовать открыть через /proc/self/fd/N как файл, если очень нужно

mashina ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.