目录

面试-每日一题

目录

面试—–每日一题

一、进程通信的几种方式?

1.管道:管道分为「有名管道」和「匿名管道」。匿名管道是半双工通信方式,数据单向流动,通常用于有亲缘关系的进程,如父子进程间的临时通信,如果要双向通信,一般需两个管道。有名管道也是半双工,在文件系统中有路径名,允许无亲缘关系的进程通信,任何有适当权限的进程都可打开使用。

2.信号:用于通知接收进程某个事件已发生,如外部中断(Ctrl+C 产生 SIGINT 信号)、进程控制(kill 命令发送信号)、定时器超时(SIGALRM 信号)、子进程状态变化(父进程收到 SIGCHLD 信号)等,进程可根据收到的信号执行相应动作。

3.消息队列:消息的链表存于内核,由消息队列标识符标识。进程可按一定规则发送和接收消息,克服了信号传递信息少、管道只能承载无格式字节流及缓冲区大小受限等缺点。

4.信号量:是一个计数器,用于控制多个进程对共享资源的访问,常作为锁机制,防止进程同时访问共享资源,主要用于进程间及同一进程内不同线程间的同步。有名信号量可跨进程使用,生命周期可超过创建进程。

5.共享内存:允许多个进程访问同一块内存区域,进程直接读写该区域进行通信,是最快的进程间通信方式,但需配合信号量等同步机制避免数据竞争和一致性问题,可分为匿名共享内存和基于文件的共享内存。

6.套接字:可用于本地进程间通信和不同机器间的进程通信。用于本地时称本地套接字,用于网络时称网络套接字,提供了跨网络平台的通信机制,使不同主机上的进程能通信。