读写器和进程间通信设计

时间:2013-04-12 21:43:28

标签: c linux network-programming ipc

我想写一个程序,一个模块是:

我有两个进程,进程A负责使用recvfrom()recv接收数据包 另一个过程B继续其他一些事情。

每当进程A收到一个数据包时,它应该立即从数据包中提取一些信息并告诉信息进行处理B.并且B需要立即停止它正在做的事情并读取信息。

这就像一个tcp堆栈,让我说,进程A负责接收数据包或ack数据包,进程B负责发送数据包。当进程A收到数据包时,进程B应读取数据包,更新下一个传出包的seq号和ack_seq号。

无论如何,我的想法是进程A和B应该共享一个结构变量,并且varialbe上有一个锁。 B继续读取变量,当A收到数据包时,它锁定变量,因此B被阻塞。 A修改变量后,A解锁它,B得到读取变量,然后继续做自己的工作。伪代码就像

struct SHARE shared_variable;
pid=fork();
if(pid==0) {  // process B
        while(1){
         lock(shared_variable);
         k=read(shared_variable);
         unlock(shared_variable);
         do_something(k);  
         }
       }

 if(pid>0){ // process A
       while(1){
       recv();
       lock(shared_variable);
       modify(shared_variable);
       unlock(shared_variable);
       }
   }

我不熟悉进程间通信和网络编程 我的问题是:
     1是我伪代码的结构好吗?有更好的解决方案吗?      2我应该为共享变量使用什么样的IPC样式      3我只知道一些理论,有没有具体的样本源代码?

thanks!

0 个答案:

没有答案