IPC和Notification机制
Mac OS X支持进程之间的通讯(interprocess communi-cation)和消息传递的技术。下面逐一介绍:
FSEvents API
FSEvents应用程序接口自Mac OS X10.5引入。它的作用是,当Mac OS X的文件系统发生变化时,它负责通知(notify)注册FSEvent的应用程序。你可以使用这套API监视目录结构的任何改变,如文件和目录的创建,修改,删除等等。虽然BSD的kqueue技术提供了相似的功能,但FSEvent使用更为简单,它可以方便地同时监视多个目录。更确切的说,你可以监视一个目录的继承体系,当这个目录或它的任意一个子目录发生变化时,你都可以接受到通知。文件系统消息效率极高,可以在短的时间内发出多个事件,并将相关事件结合。
FSEvents不像kqueue那样,可以了解单个文件的变化情况。你不能够用它检测单个文件的变化,如杀毒软件所做的一样。FSEvent的用途有可能是:当文件系统发生变化时应用程序将数据备份,或是一个数据文件有可能被其它的应用程序编辑。
更多关于FSEvent API的信息,请看file System Events Programming GuIDe(http://developer.apple.com/documentation/Darwin/Conceptual/FSEvents_ProgGuide/index.html)。
Kernel Queue和Kernel Events
Kernel Queue(也叫kqueue)和kernel events(也叫kevents)是捕获内核级别事件重要和有力的手段。你可以用它检测文件系统的变化,像FSEvent一样;你也可以检测套接字,进程和其它系统底层资源的变化。比如,你可以检测一个进程是不是正在退出或是否在执行fork或exec函数。
Kernel Queue和Kernel Events工作在 *** 作系统的FreeBSD层上,具体信息,请看kqueue和kevent的man pages。
BSD Notification
BSD的Notification机制由Mac OS X 10.3引入,它是系统级别的Notification API,被定义在/usr/include/notify.h头文件下。BSD Notification相比Core Foundation的消息机制的优点如下:
• BSD Notification可以用许多方法接受到,如Mach Port,信号和文件描述符。
• BSD比其它通知机制更轻便和高效。
• BSD机制可以在多个消息同时接收时结合。
任何类型的应用程序都可支持BSD消息通知机制,包括Carbon和Cocoa的应用程序。更多信息,请看Mac OS X Notification Over-vIEw(http://developer.apple.com/documentation/Darwin/Conceptual/MacOSXNotifcationOv/Introduction/chapter_1_section_1.html)或notify man page。
套接字(socket),端口(port)和流(stream)
在Mac OS X上,套接字和端口提供了应用程序之间通讯的可移植的机制。一个套接字代表了两个进程通讯通道的一端,可以是本地的,也可以是跨网络的。一个端口是本地计算机上进程之间的通道。应用程序可以用套接字和端口实现进程之间的有效的快速的信息传递。
Core Foundation框架实现了代表套接字的类CFSocket/CFRunLoop和代表端口的类CFMessagePort。你可以将CFSocket加入CFRunLoop作为一种信息源接受信息,这样可以让你不必自己编写相关的线程,节省了系统资源并提高了性能。Core Foundation提供的套接字接口比BSD更易于使用。CFMessagePort也提供了相似的功能。
如果你在已经建立了网络,如Bonjour或@R_419_6822@。更好的传递信息的方法是使用Core Foundation和Cocoa框架提供的流(stream)接口,和CFNetwork网络类配合工作。这些接口提供了基于流的信息读取和写入方式。和套接字一样,流和CFNetwork和Run Loop可以配合工作,所以适合Mac的工作环境。
关于CFSocket的更多信息,请看CFSocket Reference。关于Core Foundation流的更多信息,请看CFReadStream Reference和CFWriteStream Reference。关于Cocoa流的信息,请看Foundation Framework Refer-ence(http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Intro/IntroFoundation.html)。
以上是内存溢出为你收集整理的基于UNIX的 *** 作系统内核——IPC和Notification机制等全部内容,希望文章能够帮你解决基于UNIX的 *** 作系统内核——IPC和Notification机制等所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)