首页 > 试题广场 >

请你说说进程间的通信方式

[问答题]
请你说说进程间的通信方式
1. 通过管道 2. 信号量 3. 消息队列 4. 共享内存 5. 套接口
发表于 2022-04-26 18:50:38 回复(1)
1.管道:管道本质是内核中维护的一块内存缓冲区。2.命名管道:因为无名管道只适用于具有亲缘关系的线程,所以就衍生出来命名管道,这样就可以实现了非亲缘关系进程之间的通信。3.信号:一种通知机制。4.消息队列:是一个消息链表,既可以读消息,也可以写消息。5.共享内存:多个线程共享一片内存区域。6.内存映射:就是将磁盘文件数据映射到内存,通过修改内存就能修改磁盘文件。7socket接口,socket接口一般用于不同主机上进程之间的通信
发表于 2022-05-10 16:51:29 回复(0)
1.如果线程间采用synchronized来保证线程安全,则采用wait、notify、notifyAll来实现线程通信 2.如果线程间采用Lock来保证线程安全,则采用await\singal\singalAll 3.通过消息队列
编辑于 2022-04-20 15:28:16 回复(4)
1.匿名管道:有亲缘关系的进行间的通信。2.命名管道:无关系的进程之间也能进行通信。3.信号:系统在某些事件发生后对进程的通知,是异步通信。4.信号量:用于进程、线程间同步处理,有P、V操作。P操作信号量减一,当信号量小于零线程将被阻塞,V操作信号量加一,当信号量大于零线程将被唤醒。5.消息队列:生产端负责生产消息,消费端负责消费消息。6.共享内存:多个进行共享一块内存区域,这种IPC机制无需内核参与,效率更高。7.内存映射:将磁盘文件数据映射为内存数据,用户通过修改内存就能修改磁盘文件数据。8.Socket:一般用于不同主机进程之间的通信。
发表于 2022-06-12 18:23:37 回复(0)
1、管道:管道实质是内核中的一块内存缓存区。创建缓存后会返回两个文件描述符,分别是读与写。有名管道可以在不存在亲缘关系的进程中通信。管道的缺点:只能FIFO、数据无格式且大小受限、并且通信方式是单向的,若需要双向则需要建立两个通道。 2、消息队列:消息队列是内核中的消息链,消息队列支持消息的随机查询,且能够实现多个进程间的读写操作。消息队列相比管道能承载更多的消息。但是消息队列与管道一样,都存在内核与用户内存间的数据拷贝,因此不适合进行频繁的通信。 3、共享内存:共享内存是通过两个进程的虚拟内存中的一块地址映射到同一块物理内存上,共享内存不在需要用户到内核的数据拷贝,通信双方直接操作用户空间的共享内存即可完成通信。 4、信号量:为了解决多进程对共享内存访问时的并发问题,设计了信号量以保证多进程并发访问共享变量的安全。信号量实则是一个计数器,拥有原子操作P和V。当信号量值小于等于0之后再进行P操作会把对应线程或进程阻塞。 5、信号:是事件发生对进程的通知机制,它是软件层次上对中断机制的一种模式,是一种异步通信方式。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。 6、socket:可以实现不同主机之间的进程通信。
发表于 2022-06-05 16:51:47 回复(0)
有信号量,管程通信,消息队列,共享内存
发表于 2022-05-04 18:36:53 回复(0)
管道、消息队列、共享内存、信号、信号量、套接字
发表于 2022-12-19 18:33:46 回复(0)
进程之间常见的通讯方式有:1.匿名管道,单向发消息,无格式字节流,只能用于具有父子或者兄弟关系的进程之间通信;2.命名管道:可用于无关系的进程之间;3.信号,比如sigkill等,缺点是不能发送大量消息,只能发内置的消息;4.信号量,这个是对共享资源访问的设置的一个整型变量,设置为1可用于同步,设置为0可用于干啥来着。。5.队列:这个就可以发送大量消息了6.共享内存 7.Socket,用于不同机器之间的进程之间的通信。
发表于 2022-05-24 19:51:13 回复(1)
1. 管道(匿名管道):具有亲子关系的进程,管道实质是一个内核缓冲区 2. 有名管道:先进先出,名字存储在文件系统中,内容存储在内存中 3. 信号:用于通知接收进程某个事件已经发生。 4. 消息队列:存放在内核中,可以实现消息的随机查询 5. 信号量:是一个计数器,用于多线程对共享数据的访问 6. 内存共享:多个线程可以可以访问同一块内存空间 7. 套接字:主要用于客户端跟服务端之间的通信,不同主机之间线程进行双向通信的端点。
发表于 2023-03-28 13:34:50 回复(0)
通过管道,信号量,消息队列,共享内存,套接口
发表于 2023-03-08 10:21:09 回复(0)
1.管道2.信号量3.消息队列4.共享内存5.socket
发表于 2023-03-07 11:21:11 回复(0)
进程间的通信:消息传递、管道通信和共享存储。
发表于 2023-02-04 12:26:25 回复(0)
1.管道 2.命名管道 3.信号 4.消息队列 5.共享内存 6.内存映射 7.信号量 8.Socket
发表于 2022-12-10 19:42:26 回复(0)
进程间通信主要包括:匿名管道、命名管道、信号、消息队列、共享内存、内存映射、信号量、Socket; 匿名管道:在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,一般使用fork函数(会新生成一个进程)实现父子进程的通信。 命名管道:在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,没有血缘关系的进程也可以进程间通信。 消息队列:消息队列是保存在内核中的一个消息链表,将数据分成块,一个数据块叫一个消息体,每个消息体都有固定的大小;消息队列是随内核持续的;消息队列允许一个或多个进程写入或者读取消息;消息队列可实现双向通信。 共享内存:共享内存就是取出进程的一块虚拟内存空间映射到同一个物理内存空间,这样进程之间就能看到对数据的修改,不需要来回拷贝。 信号量:信号量就是实现进程间同步与互斥的,保证任何时刻共享资源只能被一个进程访问;PV操作。 信号:信号是 Linux 进程间通信的最古老的方式之一,是事件发生时对进程的通知机制,有时也称之为软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。 Socket:Socket 通信不仅可以跨网络与不同主机的进程间通信,还可以在同主机上进程间通信。
发表于 2022-08-23 22:48:03 回复(0)
线程间通信方式有:管道,信号量,锁与同步;wit/notify/notifyall
发表于 2022-05-06 14:13:19 回复(0)
进程间的通信方式:管道、命名管道、信号、消息队列、共享内存、内存映射、信号量、socket
发表于 2022-05-06 11:25:43 回复(0)
管道(Pipe) 适合父子进程通信(单向/半双工) 否 命名管道(FIFO) 适合无亲缘关系的进程通信(单向) 否 消息队列(Message Queue) 以消息为单位交换信息(可靠) 否 共享内存(Shared Memory) 速度最快,直接操作同一片物理内存 否 信号量(Semaphore) 控制进程间同步和互斥 否 Socket(套接字) 可以本机通信,也可以跨机器通信(网络) ✅ 是 信号(Signal) 发送简单通知(杀死、暂停等) 否
发表于 2025-04-28 15:19:08 回复(0)
发表于 2025-04-27 14:04:03 回复(0)
1. 管道(匿名管道) 管道本质其实是内核中维护的一块内存缓冲区,Linux 系统中通过 pipe() 函数创建管道,会生成两个文件描述符,分别对应管道的读端和写端。无名管道只能用于具有亲缘关系的进程间的通信。 2. 命名管道 由于匿名管道没有名字,只能用于亲缘关系的进程间通信。为了克服这个缺点,提出了命名管道、FIFO文件。 命名管道不同于匿名管道之处在于它提供了一个路径名与之关联,以 FIFO 的文件形式存在于文件系统中,并且其打开方式与打开一个普通文件是一样的,这样即使与 FIFO 的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过 FIFO 相互通信,因此,通过 FIFO 不相关的进程也能交换数据。 3. 信号 (软件中断) 信号是事件发生时对进程的通知机制,有时也称之为软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。 4. 消息队列 消息队列就是一个消息的链表,可以把消息看作一个记录,具有特定的格式以及特定的优先级,对消息队列有写权限的进程可以向消息队列中按照一定的规则添加新消息,对消息队列有读权限的进程则可以从消息队列中读走消息,消息队列是随内核持续的。
发表于 2025-03-18 22:38:14 回复(2)
管道,匿名管道(只能父子),消息队列,信号,共享内存,socket
发表于 2025-03-09 19:35:40 回复(0)