当前位置: 技术问答>linux和unix
linux通信问题
来源: 互联网 发布时间:2016-07-21
本文导语: 在linux上, java和c程序之间通信, 用哪种方式最快, 讲下大概的实现方式. 谢谢! | share memeory 管道的做法比较快。但是2个程序必须能都知道share memory 的地址。 最好用非阻塞模式.通过select来...
在linux上, java和c程序之间通信, 用哪种方式最快, 讲下大概的实现方式.
谢谢!
谢谢!
|
share memeory 管道的做法比较快。但是2个程序必须能都知道share memory 的地址。
最好用非阻塞模式.通过select来进行判断是否有数据。
属性设置,fcntl(fd, F_SETFL, O_NONBLOCK);
FD_ZERO(&wfds);
FD_SET(fd, &wfds);
tv.tv_sec = 0;
tv.tv_usec = 100 * 1000;
ret = select(fd_max + 1, NULL, &wfds, NULL, &tv);
类似这样的操作。
最好用非阻塞模式.通过select来进行判断是否有数据。
属性设置,fcntl(fd, F_SETFL, O_NONBLOCK);
FD_ZERO(&wfds);
FD_SET(fd, &wfds);
tv.tv_sec = 0;
tv.tv_usec = 100 * 1000;
ret = select(fd_max + 1, NULL, &wfds, NULL, &tv);
类似这样的操作。
|
跨主机通信,肯定是TCP/IP最方便,也有利于移植。
主机内部通信,共享内存或者命名管道都可以。
主机内部通信,共享内存或者命名管道都可以。
|
共享内存维护起来太麻烦了,而且如果项目比较大的话,基本不可用,理由很简单,维护起来跟噩梦一样
可以用socket,用连接回环地址,实现简单,效率也不低
可以用socket,用连接回环地址,实现简单,效率也不低
|
IPC都可以。
本质上来说就是进程间通信吧,那还是共享内存,socket这些。
本质上来说就是进程间通信吧,那还是共享内存,socket这些。