
2つのプログラムがあります:
x
- ユーザーに入力するように求められますstdin
。
binary
- 何かをに印刷しますstdout
。印刷する内容は、ターミナルエンコーディング(UTF-8)で完全にサポートされていないさまざまなネイティブバイナリバイトで構成されています。そのため、正しく実行できません。入力の一部が(NOP)で構成され、端末が代替文字で置き換えられるため、./binary | ./x
誤った入力が発生します。x
\x90
x
他のファイル(この場合binary
)から生成された生のバイナリデータをプログラムにどのように提供しますか?
答え1
あなたはあなたが説明したように正確に行いました./binary | ./x
。あなたの端末があなたが入力した文字に満足していないからといって、必ずしもそうでは\x90
ありません./x
。
テストを試してみると、./binary | od -a
そのプログラムが端末に問題を引き起こすバイトを読み取ることができることがわかります。あるいは、およびをod -x
使用してみることもできます(これらのオプションがバイナリデータを表す方法を好むかもしれません)。od -b
od -a