mknodでuとcの間に違いはありますか?

mknodでuとcの間に違いはありますか?

man mknodLinuxから:

 c, u   create a character (unbuffered) special file

なぜ同じ機能に2つの文字があるのですか?微妙な違いがありますか、それとも全く似ていますか?

答え1

少なくともLinuxでは同じです。

私はまず次のことを見て、この結論に達しました。ソースコードmknod(1)内部にGNUコアツール、現在のバージョンのライン217では、同じ状況が処理されて同じデバイスタイプを取得することがわかり'c'ます'u'。このS_IFCHR値はLinuxカーネルヘッダファイルで定義されていますが、値は重要ではありません。重要なことは、ファイルシステムの開発ノードにも同じ値が格納されることです。

私は簡単なテストでこの問題を解決しました。

$ sudo mknod /dev/null2 u 1 3
$ ls -l /dev/null*
crw-rw-rw- 1 root root 1, 3 Jan 12  2015 /dev/null
crw-r--r-- 1 root root 1, 3 Oct 19 22:56 /dev/null2

uコマンドのAは、c次のような開発ノードを提供します。場合閉鎖。

についてはなぜどちらの文字も許可されます。最も良い推測は、b意味が「ブロック」ではなく「バッファ」だと思う人にとってはエイリアスであるだけなので、「文字u」の代わりに「バッファされていない」を意味する反義語で必要だということですc

私は最初、GNUのこの機能がmknod以前のバージョンのUnixとの互換性のためであると思いましたmknodGNUファイルツールGNUのこの機能はmknodLinux自体以前にさかのぼります。最初のバージョン管理チェックインmknod.cuしかし、Unixがパラメータとして受け入れられる文書を見つけることができなかったmknod(1)ため、そのような仮定は成立しません。 ²


ナレーター:

  1. 1991年7月にmknodGNU Fileutilsにユーティリティが追加されました。 1991年9月になるまで、Linuxカーネルの最初のバージョンがUsenetにリリースされました。これは、GNUの最初のバージョンがmknod最初からLinuxではなくオペレーティングシステムをサポートする必要があることを示しています。

  2. オンラインマニュアルページを確認しました。ソラリスHP-UXAIXFreeBSDSCOオープンサーバーSCO Unixウェアミニス2ウルトラリックス2.11BSDオペレーティングシステム

    mknod u他のオペレーティングシステムのドキュメントを見つけることができます。ミニクス3— しかし、それだけですmknod(1)mknodmknod

関連情報