下载此文档

武汉光迅笔试题.doc


文档分类:资格/认证考试 | 页数:约5页 举报非法文档有奖
1/5
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/5 下载此文档
文档列表 文档介绍
武汉光迅笔试题.docLinux进程间的通信有哪几种?请简要概述
管道(pipe)
管道是Linux支持的最初IPC方式,管道可分为无名管道,有名管道等。
(一) 无名管道,它具有几个特点:
1) 管道是半双工的,只能支持数据的单向流动;两进程间需要通信时需要建立起两个 管道;
2) 无名管道使用pipe。函数创建,只能用于父子进程或者兄弟进程之间;
3) 管道对于通信的两端进程而言,实质上是一种独立的文件,只存在于内存中;
4) 数据的读写操作:一个进程向管道中写数据,所写的数据添加在管道缓冲区的尾部;
另一个进程在管道中缓冲区的头部读数据。
(二) 有名管道
有名管道也是半双工的,不过它允许没有亲缘关系的进程间进行通信。具体点说就是, 有名管道提供了 一个路径名与之进行关联,以FIFO (先进先出)的形式存在于文件系 统中。这样即使是不相干的进程也可以通过FIFO相互通信,只要他们能访问已经提供 的路径。
值得注意的是,只有在管道有读端时,往管道中写数据才有意义。否则,向管道写数据 的进程会接收到内核发出来的SIGPIPE信号;应用程序可以自定义该信号处理函数,或 者直接忽略该信号。
信号量(semophore)
信号量是一种计数器,可以控制进程间多个线程或者多个进程对资源的同步访问,它常 实现为一种锁机制。实质上,信号量是一个被保护的变量,并且只能通过初始化和两个 标准的原了操作(P/V)来访问。(P, V操作也常称为wait(s),signal(s))
信号(Signal)
信号是Unix系统中使用的最古老的进程间通信的方法之一。操作系统通过信号来通知 某一进程发生了某一种预定好的事件;接收到信号的进程可以选择不同的方式处理该信 号,一是可以采用默认处理机制一进程中断或退出,一是忽略该信号,还有就是自定义 该信号的处理函数,执行相应的动作。
内核为进程生产信号,来响应不同的事件,这些事件就是信号源。信号源可以是:异常, 其他进程,终端的中断(Ctrl-C,Ctrl+\等),作业的控制(前台,后台进程的管理等),分 配额问题(cpu超时或文件过大等),内核通知(例如I/O就绪等),报警(计时器)。
消息队列(Message Queue)
消息队列就是消息的一个链表,它允许一个或者多个进程向它写消息,一个或多个进程 向它读消息。Linux维护了一个消息队列向量表:msgque,来表示系统中所有的消息队 列。
消息队列克服了信号传递信息少,管道只能支持无格式字节流和缓冲区受限的缺点。
共享内存(shared memory)
共享内存映射为一段可以被其他进程访问的内存。该共享内存由一个进程所创建,然后 其他进程可以挂载到该共享内存中。共享内存是最快的IPC机制,但由于linux本身不 能实现对其同步控制,需要用户程序进行并发访问控制,因此它一般结合了其他通信机 制实现了进程间的通信,例如信号量。
套接字(socket)
socket也是一种进程间的通信机制,不过它与其他通信方式主要的区别是:它可以实现 不同主机间的进程通信。一个套接口可以看做是进程间通信的端点(endpoint),辞套 接口的名字是唯一的;其他进程可以访问,连接和进行数据通信。
用C语言写atol的函数的实现
#include<>
#i

武汉光迅笔试题 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数5
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小雄
  • 文件大小89 KB
  • 时间2021-12-07