2013-08-13 5 views
-5

Кто-нибудь знает, как написать номер в трубку, прежде всего мне нужно открыть трубу, а затем написать подходящее число.Программа, основанная на трубе для межпроцессного взаимодействия

Кроме того, после написания также я должен прочитать номер и распечатать его.

Я попытался открыть трубу с командой «POPEN», но я не уверен, что дать в качестве 1-го аргумента POPEN то есть: -

 popen(const char *command, const char *type) 

я хочу спросить, какую команду я должен дать здесь, если Я хочу написать номер в трубку .. ??

+2

Несколько дубликатов (тот же пользователь): [Interprocess communication using pipe in Linux] (http://stackoverflow.com/questions/18159051/interprocess-communication-using-pipe-in-linux) и [Программа, основанная на Linux] (http://stackoverflow.com/questions/18087047/program-based-on-pipe-in-linux) –

+0

Должен быть другой процесс на другом конце трубы, чтобы прочитать его. Вы не можете просто записывать данные в трубу и оставлять их там. Команда 'const char *' - это команда на другом конце трубы, вероятно, программа, которая считывает из stdin. – cdarke

ответ

0

вы должны использовать fd=open(FIFO_NAME,O_RDONLY); для чтения файла fifo.

mkfifo(FIFO_NAME,S_IFIFO|S_IRWXU|S_IRWXG|S_IRWXO); 
    fd=open(FIFO_NAME,O_WRONLY); 

ФИФО также называется pipe.Here mkfifo создать файл ФИФО и запись в файл.

Примечание: - для чтения или записи в fifo должен быть процесс чтения и записи, иначе он будет блокировать один из процессов.

, если вы не хотите писать процесс чтения команды использования команды cat и записи, чтобы увидеть содержимое файла fifo.

Смежные вопросы