私のシステムで生成されたいくつかのネットワークポートにいくつかのデータを入力し、それを手動で実行したいとしましょう。ファイルシステムにそのためのインターフェースはありますか?
たぶん特別な種類のファイルに書き込むことができますか?そうでなければどのように機能しますか?
(私はこの質問をするのが面白く聞こえるかもしれませんが、まったく話されていなくても、このトピックに関する良い記事へのリンクを喜んで受け入れます。)
ベストアンサー1
要するに
cat
ファイルへの書き込みを使用したり、ネットワーク経由で転送したりするなど、説明した操作は何とかできません。ただし、これを実行できるツールがあります。 socatnetcat
またはsocat
socat(より柔軟ですが、やや汚れ)を見てください。どちらもデプロイメントリポジトリにあります。
説明する
Linuxでは、IPソケットはユーザースペースに存在し、ファイルシステム自体にファイルはありません。
これを実証するために、以下を実行しました$ lsof -i :15115
(ポート15115はSkypeに関連付けられています)。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
skype 3836 eightbit 43u IPv4 9020794 0t0 TCP *:15115 (LISTEN)
skype 3836 eightbit 44u IPv4 9020795 0t0 UDP *:15115
したがって、プロセスには3836
TCPソケットに番号付きのファイル記述子があります(「u」はファイルがr + w権限で開かれていることを意味します)。43
15115
したがって、これを行うと、次のような$ ls -l /proc/3836/fd/43 && file /proc/3836/fd/43
結果が得られます。
lrwx------ 1 eightbit eightbit 64 Sep 26 00:37 /proc/3836/fd/43 -> socket:[9020794]
/proc/3836/fd/43: broken symbolic link to socket:[9020794]
ご覧のとおり、ソケットはありません。本物1つの文書。