免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3133 | 回复: 13
打印 上一主题 下一主题

进程间的函数调用算是进程间通信的一种方式吗 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-05 21:46 |只看该作者 |倒序浏览
请问大家:

比如公司开发的几个模块,每个都是一个task,都起为一个进程,除了常规的消息信号量这些方式,也互相包含一些头文件,调用对方的一些函数传值.

这种函数调用,算是进程间传递信息的一种方式吗?在这种函数间传递指针应该是不合法的,是吧?因为进程的数据空间都是不同的,但是传值可以理解为一种通信方式么?

谢谢!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-12-05 21:51 |只看该作者
不是进程间通信的方式.

详细请找操作系统相关的书籍看看吧.

论坛徽章:
0
3 [报告]
发表于 2005-12-05 22:33 |只看该作者
我也知道一般所说的进程通信就是那几种方式,管道,消息队列,信号量.
可我觉得这也算是一种进程间的xia信息交互,为什么不能理解为一种通信方式呢,还是我的理解概念上有问题?

论坛徽章:
0
4 [报告]
发表于 2005-12-05 22:39 |只看该作者
还是常规意义上的通信的概念就是数据空间的共享?一般操作系统里提到的进程通信是不是包括两个概念:一个是交互,另外一个是共享系统数据?而函数级的调用只是利用堆栈传递一些静态数据?

论坛徽章:
0
5 [报告]
发表于 2005-12-05 23:24 |只看该作者
C 语言的函数调用都是只有在单独进程内、独立地址空间内部进行的调用。所谓“相包含一些头文件,调用对方的一些函数传值.”,还是要看它具体的底层实现。

论坛徽章:
0
6 [报告]
发表于 2005-12-06 16:35 |只看该作者
>> 调用对方的一些函数传值.

怎么可能呢? 除非做成共享库了,否则一个进程怎能调用别的进程的代码?

论坛徽章:
0
7 [报告]
发表于 2005-12-06 21:05 |只看该作者
非常感谢大家的回答,我想我可能是把问题弄混了,一个是编译概念,一个是运行概念.不过这个问题的出现确实很怪.每个进程都应该有自己的独立地址空间,无论是堆还是栈应该都是自己私有的,别的进程应该无法直接访问,比如通过指针.我想问题可能还是在于这个声明为extern的在某个进程内定义的函数,是可重用的,这个进程可用,其他的进程也可有调用.这应该是link时把这个函数代码link到各个不同的模块.我把这个问题搞混了,可能也是因为没有考虑到有操作系统的API调用可以让进程共享全局变量.

关于这个函数可重入,我还有一个问题,是以前一个面试时候的问题.有个人问我,象有的程序notepad,可以运行多个出来.象有的程序,如acrobat,就只能运行一个出来. 我当时回答的是sdi(单窗口)和mdi(主从窗口)的区别.但好象也不对.比如象myie. 好象就可以同时运行多个,每个里面也有多个窗口.不知道这不是因为notepad和acrobat这种程序的写法区别,和用到的可重入还是什么不能重入的函数区别?有人说是因为程序中自己做了处理,启动时会检测系统中是否已经注册了一个相同的进程.我觉得也不正确. 不知道这是因为什么原因呢?

论坛徽章:
0
8 [报告]
发表于 2005-12-06 22:12 |只看该作者
这个和函数是否能重用没有区别。另外函数是否是reentrant,也不是你说的这种情况。

所谓的单实例应用,通常有几种方法。最简单就是用一个Lock文件。比如xdm, httpd等等都是这么做的。WIndows的应用还有用注册表的,检查窗口标题的……

论坛徽章:
0
9 [报告]
发表于 2005-12-06 22:14 |只看该作者
我觉得可能需要澄清一个基本的概念。进程是数据的集合,一个函数(尤其是动态库里的函数)是不太可能属于某一个特定的进程的。所谓进程间通信,指的是数据的传递。

论坛徽章:
0
10 [报告]
发表于 2005-12-07 10:43 |只看该作者
我觉得还是二值信号量比较好一些,lock文件也可以,不过总是感觉不安全,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP