使用命名管道在进程通信中进行通知

时间:2014-02-06 14:52:59

标签: c linux ipc named-pipes

我在进程1中创建了一个命名管道(mkfifo)并在其上写了一些东西。 现在我可以阅读流程2中流程1所写的内容。

现在我可以做一些事情(比如听)过程2知道过程1写了一些东西。

2 个答案:

答案 0 :(得分:0)

完成Joachim的评论。

您应该考虑使用select或poll

What are the differences between poll and select?

答案 1 :(得分:0)

我不知道我是否真的得到了你的问题但是,如果你想要处理2知道进程1什么时候写东西,我建议你使用来自进程1的信号警告进程2事情已经准备就绪了(还有其他方法可以做到这一点)
既然您有两个进程ID(pid),您可以使用kill来发送准备好的消息,因此从已完成写入的进程中,它将是这样的:
kill(pid, SIGINT)
然后按您的意愿处理中断信号:

  

struct sigaction sigtohandle;
   memset(& sigtohandle,0,sizeof(sigtohandle));
   sigtohandle.sa_handler =& read_process;
   sigaction(SIGINT,& sigtohandle,NULL);

因此,您将在信号接收器进程中拥有一个名为read_process()的函数,该函数可以完成您想要的工作。

您可以在此处阅读有关流程和信号的更多信息:

  

http://advancedlinuxprogramming.com/alp-folder/alp-ch03-processes.pdf