有名管道中读写进程的 Linux 命令是什么,写成进程 A 和进程 B 完整代码以及 Linux 命令
时间: 2024-05-06 11:17:23 浏览: 63
Linux环境进程间通信
Linux 中用于创建有名管道的命令是 `mkfifo`,用于读写有名管道的命令是 `cat`。
以下是进程 A 和进程 B 的完整代码:
进程 A(写入有名管道):
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#define FIFO_NAME "/tmp/myfifo"
int main()
{
char buf[100];
int fd;
// 创建有名管道
mkfifo(FIFO_NAME, 0666);
// 打开有名管道
fd = open(FIFO_NAME, O_WRONLY);
while (1) {
// 从标准输入读取数据
fgets(buf, sizeof(buf), stdin);
// 将数据写入有名管道
write(fd, buf, strlen(buf) + 1);
}
// 关闭有名管道
close(fd);
return 0;
}
```
进程 B(从有名管道读取数据):
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#define FIFO_NAME "/tmp/myfifo"
int main()
{
char buf[100];
int fd;
// 打开有名管道
fd = open(FIFO_NAME, O_RDONLY);
while (1) {
// 从有名管道读取数据
read(fd, buf, sizeof(buf));
// 将数据输出到标准输出
printf("Received: %s", buf);
}
// 关闭有名管道
close(fd);
return 0;
}
```
使用 Linux 命令 `mkfifo` 创建有名管道:
```bash
$ mkfifo /tmp/myfifo
```
使用 Linux 命令 `cat` 读取有名管道中的数据:
```bash
$ cat /tmp/myfifo
```
阅读全文