簡體   English   中英

為什么我的scanf會收到我從Popen發出的訂單

[英]Why my scanf catch the order that I give from my Popen

TL; DR:如何使我的scanf(必須為scanf)從python讀取輸入?

所以我在python中有這個文件

import subprocess
import sys

process=subprocess.Popen(["canCHandleIt.exe"],stdout=subprocess.PIPE)
res=process.communicate(2)
print res[0]

重點很簡單。 正如我的C代碼所建議的那樣,我希望C捕獲數字“ 2”並成功打印兩次。

#include <stdio.h>
int main(){
    int x;int o;
    scanf("%d",&x);
    for (o=0;o<x;o++){
    printf("Sucsess!");
    }
}

但這只是停止。 當然,如果鍵入數字2,則可以使用,但是我希望我的scanf可以單獨使用。

有人可能建議我應該只使用等效於Python的sys.stdin.readline() C,但我確實希望我的scanf能夠在沒有人為干擾的情況下工作。 (我之所以這樣問,是因為我經常在比賽中使用scanf,而我顯然想在python中復制比賽機器人。)

您可以假設我已經gcc了我的c文件。

嘗試這個:

import subprocess
import sys

process=subprocess.Popen(["canCHandleIt.exe"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
res=process.communicate('2')
print res[0]

...主要區別是stdin=subprocess.PIPE傳遞給Popen() ,並將“ 2”作為字符串而不是int communicate()communicate()

據記錄為communicate()

可選的輸入參數應該是要發送給子進程的字符串。

請注意,如果要將數據發送到進程的stdin,則需要使用stdin = PIPE創建Popen對象。

暫無
暫無

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

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