2016-09-05 29 views
1

これは可能ですか? Cプログラムへの入力としてのPythonの出力。CプログラムへのPython入力の出力

私はこのコードが動作する前に私が言うと私は信じていますか? これは動作しません。どうすればそれを動作させることができますか?

python -c 'print "a" ' | ./myProgram 
MYPROGRAMため

簡単な例:

#include <stdio.h> 

int main(int argc, char *argv[]){ 

    int i = 0; 

    if(argc > 0){ 
    for(i; i<argc; i++){ 
     printf("%s\n", argv[i]); 
    } 
    printf("Done."); 
    } 
    return 0; 
} 

答えて

1

をごCコードを入力scanfによって取られるべきです。

Cコード:[test.c]

#include <stdio.h> 
int main() { 
    int x; 
    scanf("%d",&x); 
    printf("Value is %d\n",x); 
} 

コンパイル:

gcc test.c -o foo

Pythonコード:[test.py]

print (3) 

コマンド:

python test.py | ./foo

出力:C code

Value is 3

ここでは、標準入力がパイプの端部にkeyboardから変更されます。 python codeの標準出力はmonitorからbeginning of pipeに変更されました。

Cには、この操作を実行するカーネルレベルの呼び出しがあります。 close()dup()については、あなたのコンセプトがクリアされることを願っています。 Good Luck :)

実際には、コマンドライン引数を表示しようとしています。しかし、あなたのコマンドを見てください。あなたはmyprogramに引数を渡していません。従って、argc = 0

0

それを動作させるために、これを行います。

./myProgram `python -c 'print "a" '` 

これはのargc/argvので動作します。 Parnabは言ったように、パイプはあなたの議論をstdinに置き換えたので、以前に与えられた議論はありませんでした。

関連する問題