這可能很簡單,但我在任何地方都找不到解決方案,所以很抱歉。
我有兩個檔案 - 一個.cpp檔案和一個.py檔案。我使用system("python something.py");來運行.py檔案,它必須要得到一些輸入。我如何將輸入傳回.cpp檔案?我沒有使用Python.h庫,我有兩個單獨的檔案。
預先感謝!
uj5u.com熱心網友回復:
system()是一個非常鈍的錘子,不支持父行程和子行程之間的很多互動。
如果你想把資訊從 Python 腳本傳回 C 父行程,我建議讓 python 腳本把你想傳回 C 的資訊列印() 到 stdout,并讓 C 程式決議 python 腳本的 stdout 輸出。 system()不會讓你這樣做,但你可以使用popen()來代替,就像這樣:
#include <stdio.h>/span>
int main(int, char **)
{
FILE * fpIn = popen("python something.py", "r") 。
if (fpIn)
{
char buf[1024] 。
while(fgets(buf, sizeof(buf), fpIn) )
{
printf("The python script printed: [%s]
", buf)。)
//從(buf)中的文本決議出數值的代碼可以放在這里。
}
pclose(fpIn); //注意:一定要呼叫pclose(),*不是*fclose()。
}
else printf("無法運行python腳本!
")。)
return 0;
}
如果你想變得更復雜,你可能需要在你的C 程式中嵌入一個Python解釋器,然后你就可以直接呼叫Python函式并將其回傳值作為Python物件回傳,但這是一個相當大的工程,我猜你想要避免。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/306740.html
標籤:
