質問

Linux内のパイピングI / O関数には新しいものだけです。 2 Cファイルが作成され、最初のデータはデータを送信します:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <unistd.h>

    int main(int argc, char* argv[])
    {
         int i = 0;

         for(;;)
         {
             printf("\nSent number: %d",i);
             i++;
             sleep(1);
             fflush(stdout);
         }

    return 0;
}
.

2番目のファイルは印刷された番号を受け取り、それを表示します。

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <unistd.h>

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

    for(;;)
    {
        scanf("%d",&x);
        printf("Received number: %d\n",x);
        sleep(1);
        fflush(stdout);
    }

    return 0;
}
.

最後に最初のファイルから2番目のファイルから2番目のファイルへのデータをリダイレクトしようとします。

./send_test.out | ./rcv_test.out
.

端末は繰り返し印刷されます。「受信番号:0」、私は間違っていますか? また、送信者から受信者に出力を指示しながら、両方のプログラムを同時に実行しているプログラムのWindowsをターミナルにするにはどうすればよいですか。

事前感あり

役に立ちましたか?

解決

受信機が理解できるフォーマットの数字を「送信」していません。

送信者の書式設定文字列から%dを除くすべてのテキストを削除してみてください。

また、それに頼る前にscanf()の戻り値を確認する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top