2 CファイルでのLinuxコマンドラインリダイレクト
-
23-12-2019 - |
質問
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()
の戻り値を確認する必要があります。
所属していません StackOverflow