Именованные трубы в т - PullRequest
       36

Именованные трубы в т

2 голосов
/ 15 ноября 2010

Я пытаюсь использовать именованные каналы в C и столкнулся с некоторыми трудностями. Что касается анонимных каналов, я просто создаю канал с дескрипторами r / w и затем закрываю противоположный конец каждый раз, когда хочу выполнить чтение или запись. Это легко сделать, так как я могу просто каждый раз открывать () и закрывать () другой конец.

С именованными каналами, я немного запутался, я нашел инструкцию mkfifo(), которая создает именованный канал, но не понимает, как правильно читать и писать в него.

Спасибо

Ответы [ 3 ]

4 голосов
/ 15 ноября 2010

После того, как канал был создан с помощью mkfifo() (что могло быть сделано в любой точке в прошлом - именованные каналы существуют в файловой системе, пока они не связаны), сторона чтения открывает их, используя open("/path/to/pipe", O_RDONLY) и сторона записи открывает его с помощью open("/path/to/pipe", O_WRONLY).

После этого его можно использовать как анонимный канал.

2 голосов
/ 15 ноября 2010

В этом нет ничего особенного.Используйте mkfifo, чтобы создать канал, а затем прочитайте и запишите свои процессы, как любой файл.Это не специфично для C.Вы можете сделать это:

mkfifo testfifo

cat testfifo

А затем в другом окне

echo "привет, мир"> testfifo

0 голосов
/ 15 ноября 2010

Я думаю, вы должны просто использовать каналы, потому что они обрабатывают передачу данных между различными процессами независимо от того, сколько времени занимает каждый процесс

...