Linux:进程间通信(一.初识进程间通信、匿名管道与命名管道、共享内存)
warning:
这篇文章距离上次修改已过312天,其中的内容可能已经有所变动。
在Linux中,进程间通信(IPC)是多个进程间进行数据共享和交换的一种方式。以下是一些常见的IPC形式:
管道(Pipes):分为匿名管道和命名管道。
- 匿名管道:单向,用于父子进程通信。
- 命名管道:可在无关进程间通信,需创建并指定名称。
- 共享内存(Shared Memory):多个进程可访问同一块内存区域。
- 信号量(Semaphores):用于控制多个进程对共享资源的访问。
- 消息队列(Message Queues):在内核中管理的一个消息链表,用于传递有格式的数据。
- 套接字(Sockets):可用于不同主机间的进程通信。
以下是创建匿名管道和共享内存的示例代码:
// 创建匿名管道
int pipefd[2];
if (pipe(pipefd) == -1) {
perror("pipe");
exit(EXIT_FAILURE);
}
// 创建共享内存
key_t key = ftok("./", 65); // 生成key
int shmid = shmget(key, 1024, IPC_CREAT | 0666); // 创建共享内存
void *shmaddr = shmat(shmid, NULL, 0); // 映射共享内存
这些代码片段展示了如何在C语言中创建管道和共享内存,并处理可能出现的错误。在实际应用中,你还需要编写额外的代码来实现数据的读写和管理共享内存。
评论已关闭