日期:2014-05-16  浏览次数:20620 次

linux下的进程通信
本帖最后由 kaly_liu 于 2013-01-04 10:53:54 编辑
想实现A和B两个独立程序的相互通信与同步;


A在循环,B也在循环,先打开A程序,然后再打开B程序;
A在while(1)里面循环,但是要和B中的循环相互通信;
A生成一次文件,B处理一次;然后A重新生成一次文件,B再处理一次......
1.有名管道用过了,发现 管道要先read然后才可以write;有名管道我是这么设计的,在A中创建两个管道1和2;然后1写,2读取;在b中就是1读取,2写;但是假如我先运行A那么1写的那个就出错了,因为管道要先读,然后才可以写的,但是这个1写的1读是在B中的····
2.我用了消息队列,但是发现消息队列中的KEY好像只能在同一个程序中使用?(不知道是不是我没弄明白)这样一来要两个独立的程序之间通信,就没办法了?
3.信号量,我也发现了和2一样的额问题。。。。
求指点

------解决方案--------------------
消息队列、信号量、共享内存在同一用户下多进程访问没有任何问题,只是在创建或获取ID时需要使用相同的KEY来获取。

如消息队列:
  if ((GET_MSGQ_ID = msgget (GET_MSGQ_KEY, PERMS 
------解决方案--------------------
 IPC_CREAT)) == -1) //10004   获取SLEE消息
  {
    return (-1);
  }

此处只要GET_MSGQ_KEY的值在各进程中设置为相同的数字如0x50001,则获取到的GET_MSGQ_ID各进程都一样,这样就可以多进程访问了。