编写一个由C程序通过管道发送数据,Python程序接收数据的例程
时间: 2024-02-03 08:15:17 浏览: 75
您好,我能回答您的问题。以下是一个由 C 程序通过管道发送数据,Python 程序接收数据的例程:
C 程序:
```
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
int main(int argc, char const *argv[])
{
int fd;
char *myfifo = "/tmp/myfifo";
char buf[1024];
char *data = "Hello from C program!";
/* 创建命名管道 */
mkfifo(myfifo, 0666);
printf("Opening pipe...\n");
/* 打开命名管道 */
fd = open(myfifo, O_WRONLY);
printf("Writing data to Pipe...\n");
/* 写数据到管道中 */
write(fd, data, strlen(data) + 1);
printf("Data written to Pipe: %s\n", data);
/* 关闭管道 */
close(fd);
unlink(myfifo);
return 0;
}
```
Python 程序:
```
import os
# 定义管道名称
myfifo = "/tmp/myfifo"
# 打开管道
if not os.path.exists(myfifo):
os.mkfifo(myfifo)
fd = os.open(myfifo, os.O_RDONLY)
# 读取管道中的数据
data = os.read(fd, 1024).decode().rstrip()
print("Data received from Pipe: ", data)
# 关闭管道
os.close(fd)
os.unlink(myfifo)
```
在终端中,您可以先运行 Python 程序,然后再运行 C 程序,这样 Python 程序会从管道中获取来自 C 程序的数据并将其输出到终端上。如有疑问,欢迎继续追问。
阅读全文