首页 > 试题广场 >

下列哪些可以用于 Linux 进程间通讯?

[不定项选择题]

下列哪些可以用于Linux进程间通讯?

  • UNIX套接字
  • 信号量
  • 无名管道
  • 文件锁
  • 共享内存
Linux进程通信六大方式:
1,管道及(pipe)有名管道
2,信号(signal)                
3,  报文队列
4,共享内存
5,信号量(semaphore)
6,套接字(socket)
发表于 2017-08-18 11:04:40 回复(3)
Linux 下进程间的通信方式有以下几种
(1)管道/无名管道
(2)信号
(3)共享内存
(4)消息队列
(5)信号量
(6)socket
这是书上说的六种通信方式,通过文件锁的方式也可以实现进程间的通信(上网查了一下)所以要记住文件锁
发表于 2017-08-28 15:13:13 回复(4)
进程通信方式:
(1)(无名)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。 
(2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。 
(3)信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。 
(4)消息(Message)队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺 
(5)共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。 
(6)内存映射(mapped memory):内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现它。 
(7)信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。 
(8)套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。
(9)文件锁;

发表于 2019-02-23 09:57:30 回复(0)
什么鬼题目,文件锁最多只能算同步机制,真正通信还不是对文件读写,真就只要能传递信息就写到题目里来呗,那命令行参数算不算我execl的时候传递呗,环境变量算不算?execl也能传递呀,我回收子进程的时候waitpid收到返回码算不算啊?如果还嫌通信的数据太少那我用mmap文件映射内存,进程一起来读这个文件算不算,出题者怎么总能找到一些稀奇古怪的刁钻角度。
发表于 2022-06-29 07:22:19 回复(0)
无名管道:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程)。

单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。

数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。
有名管道:不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过FIFO相互通信(能够访问该路径的进程以及FIFO的创建进程之间),因此,通过FIFO不相关的进程也能交换数据。值得注意的是,FIFO严格遵循先进先出(first in first out),对管道及FIFO的读总是从开始处返回数据,对它们的写则把数据添加到末尾。它们不支持诸如lseek()等文件定位操作。
发表于 2017-08-18 16:27:14 回复(0)

 IPC方式:
        在操作系统内核中开辟一段空间,进程去访问它。
管道(Pipe):
        优点:实现简单,资源消耗较小。
        缺点:只能支持单向通信。
信号(singnal)
        优点:异步通信,灵活,速度快,系统资源占用少。
        缺点:不够可靠、容易丢失,安全性问题。
信号量(Semaphore):
        优点:可以解决进程间的同步问题,确保共享资源的正确访问。
        缺点:不适用于数据传输,只能用于同步操作。
消息队列(Message Queue):
        优点:支持多对多的通信方式,具有较高的灵活性。
        缺点:由于消息队列的实现需要内核参与,因此性能较低。
共享内存(Shared Memory):
        优点:数据交换效率高,适合大量数据传输。
        缺点:需要进行进程间的同步操作以避免竞争条件。
套接字(Socket):
        优点:可以在不同主机之间进行通信。
        缺点:相比其他进程间通信方式,实现更为复杂。

发表于 2023-11-16 10:29:42 回复(0)
套管报共信
发表于 2023-11-13 14:35:22 回复(0)
文件锁更多用于一个保护文件的作用,flock和fcntl都能加,但是fcntl可以加强制锁,如果说通讯包含同步那么这个选项就是对的
发表于 2023-04-18 14:30:18 回复(0)
Linux进程通信六大方式:
1,管道及(pipe)有名管道
2,信号(signal)                
3,  报文队列
4,共享内存
5,信号量(semaphore)
6,套接字(socket)
发表于 2022-02-14 08:46:23 回复(0)
Linux进程通信六大方式
信号
管道(共享文件)
信号量  semahore
共享内存
消息队列
socket


发表于 2021-05-22 15:59:06 回复(0)
Linux进程通讯的六大方式: 管道(包括无名和有名) 信号 信号量 套接字(socket) 共享内存 报文队列 还要记住这个文件锁!!!
发表于 2021-04-02 10:36:53 回复(0)
信号量是用于进程间同步的,但是如果一个进程使用V原语时唤醒了其他沉睡的进程,这也是一种通信。
同样地,释放文件锁的进程会唤醒其他获取锁进程。

发表于 2020-04-23 22:07:36 回复(0)
进程通信:socket套接字、信号量、管道、文件锁、共享内存、报文队列,管报共套文号
发表于 2019-08-01 20:56:11 回复(0)
Linux进程通讯的六大方式:
管道(包括无名和有名)
信号
信号量
套接字(socket)
共享内存
报文队列
还要记住这个文件锁!!!
发表于 2019-04-04 11:06:49 回复(0)
abe
发表于 2017-03-06 23:27:07 回复(0)