簡體   English   中英

如何使用Python subprocess.call()將C ++程序讀入參數傳遞給它?

[英]How can I make a C++ program read arguments passed into it with Python subprocess.call()?

基本上我正在制作一個Python程序,其中一部分需要運行C ++可執行文件,我用以下代碼調用exe:

subprocess.call(["C:\\Users\\User\\Documents\\Programming\\Python\\Utilities\\XMLremapper\\TranslatorSource\\FileFixer.exe", "hi"])

但是如何讓C ++程序讀取輸入呢? 我試過了:

FILE * input = popen("pythonw.exe", "r");
cout<< input.getline() << endl << endl;

但那只輸出0x22ff1c並且絕對不是“hi”。 將輸入管道輸入C ++程序需要什么代碼?

它們作為參數傳遞給main函數。

main(int argc, char *argv[])

argcargv的長度。 所以它會

main(int argc, char *argv[])
{
 cout<<argv[1];
 return 0;
}

如果您只想傳遞一些參數,一個簡單的選擇是在命令行上讀取參數,如另一個答案所示。

對於更實質的輸入/輸出,您自然希望使用cout或cin,更好的選擇是使用subprocess.Popen。 然后,您可以寫入和讀取其他進程,就好像它們是python中的文件句柄一樣。 例如:

proc = subprocess.Popen(["FileFixer.exe"], 
            stdin=subprocess.PIPE, 
            stdout=subprocess.PIPE, 
            stderr=subprocess.PIPE)
stdout, stderr = proc.communicate("hi\n") 

這告訴python運行進程,傳入'hi'后跟回車符號作為標准輸入,然后可以在C ++程序中通過cin讀取。 然后將標准輸出(C ++中的cout結果)傳遞給stdout列表,並將標准錯誤傳遞給stderr。

如果你需要更多的交互式通信,你也可以訪問proc.stdout和proc.stdin,就好像它們是python中的文件句柄一樣(例如proc.stdin.write(“hi \\ n”))

暫無
暫無

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

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