簡體   English   中英

C 和 Python 程序之間的 Pipe

[英]Pipe between a C and a Python program

我目前正在嘗試編寫一個與硬件交互的 C 程序,我選擇了這樣,因為硬件制造商為此硬件提供了 C SDK。 However, I want this C program to output the data it receives from the hardware (a sensor for example) to a pipe so that I can write a Python program to pick up the data and parse it and do some analytical things with it. 我在 Raspberry Pi (Linux) 上運行這些程序。 如何在這兩個不同的程序(Python 和 C)之間創建 pipe? 我可以通過 pipe 位置來做到這一點嗎?

由於您只想在一個方向上 pipe 數據,因此您不需要在代碼中創建 pipe。

最簡單的方法是通過將數據寫入 C 程序中的stdout並從stdin中的標准輸入讀取數據,讓操作系統 pipe 為您提供數據。

你會像這樣運行程序:

mycprog | python myscript.py

在 C 代碼中,您將使用如下內容:

#include <stdio.h>

unsigned char buffer[BUFFER_SIZE];
/* read from sensor to buffer */
fwrite(sensor_buffer, sizeof(usigned char), BUFFER_SIZE,  stdout);

在 Python 端,代碼如下所示:

import sys

sensor_bytes = sys.stdin.read(BUFFER_SIZE)

您也可以使用popen直接從 C 代碼啟動 Python 腳本,但這會使您的解決方案不那么靈活,如果您想將數據發送到另一個腳本或程序,則必須更改 Z0D61F83740CAD812F743E 代碼。

最后,如果您不想依賴 shell,或者您想在不同的 shell 中運行兩個程序,您可以使用mkfifo創建一個名為 pipe 的程序。

這是一個詳細的例子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM