1

mknodコードでファイルを作成するために使用したいのですがman

mknod() の移植可能な唯一の使用法は、FIFO 特殊ファイルを作成することです。mode が S_IFIFO でないか、dev が 0 でない場合、mknod() の動作は規定されていません。

つまり、mknod は実際には移植性がなく、別の方法で関数を作成する必要があるということですか? 電話openしてすぐにcloseいかがですか?どちらの方法がより安全ですか?

4

2 に答える 2

7

mknodファイルを作成するためのものではありません。これは、デバイス ノードを作成するためのものです。ポータブル アプリケーションでは、デバイス ノードを作成する必要はありません。デバイス ノードが存在するかどうか、その内容、および実装方法と番号付け方法は実装の詳細です。

mknod歴史的には fifo も (そしておそらく通常のファイルも?) 作成することを許可していましたが、その代わりに標準のインターフェイスがあります: mkfifofifo 用、およびcreat(またはopenを使用してO_CREAT) 通常ファイル用です。

于 2010-12-28T14:10:05.883 に答える
1

その段落の残りの部分を読むと、次のようになります。

However, nowadays one should never use mknod() for this purpose;
one should use mkfifo(3), a function especially defined for this purpose.

したがって、POSIX.1-2001ここで言うことはすでに時代遅れです。私はそれを無視します。mknodLinuxシステムのinitスクリプトによってまだ使用されています。

于 2010-12-28T13:24:24.233 に答える