2

これが私のNode.JSコードです

var rec = spawn('rec.exe');
rec.stdout.setEncoding('ascii');
rec.stdout.on('data', function (data) {
console.log(data);
    //do something
}
);

私の C++ プログラム (Cygwin でコンパイル) は、printf() を使用して stdout に何かを書き込みます。

if(bufsize!=0&&rec[0]=='0')
    {
    printf("%s\n",rec);
    //printf("Received,write into exchange file\n");
    //fp=fopen("recvdata.txt","w");
    //fprintf(fp,"%s\n",rec);
        //fclose(fp);
}

しかし、データ イベントは発行されません。

C++ コードは ping などの他のコマンドで動作するため、C++ コードに何か問題があると確信しています。

次に、この場合、イベントが発行されることに気付きました

if(fd==-1)
{
    printf("Failed,again\n");
    return 0;
}

これは、プロセスが終了すると、すべてが正常に機能することを意味します。しかし、それは私が望むものではありません。

誰かが私を助けることができますか?ありがとう。

4

1 に答える 1

1

C++ プログラムにバッファリングの問題があるようです。おそらく、各行でのバッファを自動的にフラッシュするわけではないstdoutため、すべての出力は、終了するまで「まとまります」。それを変更するために使用できる設定がいくつかあることは知っていioctlますが、それが何であるかをずっと忘れていました。「stdout バッファリング」で検索すると、役立つ情報が見つかるかもしれません。

于 2012-07-11T06:15:23.097 に答える