进程通信实验代码 linux
时间: 2024-01-31 12:02:17 浏览: 25
下面是一个简单的进程通信实验代码,代码中使用了管道进行进程间通信。
```
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main()
{
int fd[2]; // 用于存储管道的读写文件描述符
pid_t pid;
char buffer[256];
// 创建管道
if (pipe(fd) < 0)
{
perror("pipe error");
exit(EXIT_FAILURE);
}
// 创建子进程
pid = fork();
if (pid < 0)
{
perror("fork error");
exit(EXIT_FAILURE);
}
else if (pid > 0)
{
// 父进程
close(fd[0]); // 关闭管道的读取端
printf("请输入消息:");
fgets(buffer, sizeof(buffer), stdin);
// 写入管道
if (write(fd[1], buffer, strlen(buffer)) < 0)
{
perror("write error");
exit(EXIT_FAILURE);
}
close(fd[1]); // 关闭管道的写入端
}
else
{
// 子进程
close(fd[1]); // 关闭管道的写入端
// 读取管道
if (read(fd[0], buffer, sizeof(buffer)) < 0)
{
perror("read error");
exit(EXIT_FAILURE);
}
printf("收到消息:%s", buffer);
close(fd[0]); // 关闭管道的读取端
exit(EXIT_SUCCESS);
}
return 0;
}
```
编译运行:
```
gcc -o ipc ipc.c
./ipc
```
输入消息后,程序会创建一个子进程,然后将消息写入管道,子进程会从管道中读取消息并输出。