LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 896|回复: 8

如何在两个函数间通信?

[复制链接]
发表于 2005-5-24 15:32:28 | 显示全部楼层 |阅读模式
如何在两个函数间通信?

有两个.c文件,分别有maim主函数
现在需要在这两个程序间通讯
即一个告诉另一个何时进行什么操作
除了system(),
该如何实现呢
发表于 2005-5-24 15:47:06 | 显示全部楼层
system可以吗?好像system是用来启动另外一个进程的方法,
应该使用 pipe, share memory, socket等方法。
回复 支持 反对

使用道具 举报

发表于 2005-5-24 15:49:30 | 显示全部楼层
低一点效率,还可以用文件共享信息。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-24 17:59:44 | 显示全部楼层
可能表述的不是很清楚
要完成的启动另一个进程的工作
不是数据的通信
只是传递消息
告诉另一个进程启动
回复 支持 反对

使用道具 举报

发表于 2005-5-24 21:09:52 | 显示全部楼层
fork+exec
回复 支持 反对

使用道具 举报

发表于 2005-5-27 11:01:50 | 显示全部楼层
用传说中的进程间通讯!!!
回复 支持 反对

使用道具 举报

发表于 2005-5-28 13:50:46 | 显示全部楼层
这叫“进程间通信”,不叫“函数间通信”。通信的方法有很多,我推荐用client-server的方式,server指定一个sockaddr开启服务,例如:
int server_begin(const struct sockaddr *sockaddr, socklen_t *addrlen);
这样,sockaddr既可以是unix域协议的地址,也可以是IP地址,client和server之间可以是本地通信也可以是远程通信,对程序来说完全透明。
尽量不要用System V的IPC,共享内存听起来很方便实现上一点都不好。
回复 支持 反对

使用道具 举报

发表于 2005-5-29 18:10:02 | 显示全部楼层
tetris 你所说的socket不属于进程间通讯吗
还有,为什么说尽量不要用ipc呢
tetris请赋教!
回复 支持 反对

使用道具 举报

发表于 2005-5-29 19:03:40 | 显示全部楼层
socket当然属于进程间通信,只是通信的进程既可以在同一个计算机上,也可以在网络的两个不同角落。
我是说尽量不要用SystemV的IPC,不是说不要用IPC。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表