mknod
コードでファイルを作成するために使用したいのですがman
、
mknod() の移植可能な唯一の使用法は、FIFO 特殊ファイルを作成することです。mode が S_IFIFO でないか、dev が 0 でない場合、mknod() の動作は規定されていません。
つまり、mknod は実際には移植性がなく、別の方法で関数を作成する必要があるということですか? 電話open
してすぐにclose
いかがですか?どちらの方法がより安全ですか?
mknod
ファイルを作成するためのものではありません。これは、デバイス ノードを作成するためのものです。ポータブル アプリケーションでは、デバイス ノードを作成する必要はありません。デバイス ノードが存在するかどうか、その内容、および実装方法と番号付け方法は実装の詳細です。
mknod
歴史的には fifo も (そしておそらく通常のファイルも?) 作成することを許可していましたが、その代わりに標準のインターフェイスがあります: mkfifo
fifo 用、およびcreat
(またはopen
を使用してO_CREAT
) 通常ファイル用です。
その段落の残りの部分を読むと、次のようになります。
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
ここで言うことはすでに時代遅れです。私はそれを無視します。mknod
Linuxシステムのinitスクリプトによってまだ使用されています。