版權所有 © 2014 tutorialspoint
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> int mknod(const char *pathname, mode_t mode, dev_t dev);
int mknod(const char *pathname, mode_t mode, dev_t dev);
mode 引數指定要使用的許可權和要建立的節點型別。它應該是下面列出的檔案型別之一與新節點的許可權的組合(使用按位或)。
許可權以通常的方式由程序的 umask 修改:建立的節點的許可權為 (mode & ~umask)。
檔案型別必須是 S_IFREG、S_IFCHR、S_IFBLK、S_IFIFO 或 S_IFSOCK 之一,分別指定普通檔案(將被建立為空)、字元特殊檔案、塊特殊檔案、FIFO(命名管道)或 Unix 域套接字。(零檔案型別等效於型別 S_IFREG。)
如果檔案型別是 S_IFCHR 或 S_IFBLK,則 dev 指定新建立的裝置特殊檔案的 major 和 minor 編號;否則忽略它。
如果 pathname 已經存在或是一個符號連結,則此呼叫將失敗並出現 EEXIST 錯誤。
新建立的節點將由程序的有效使用者 ID 擁有。如果包含該節點的目錄設定了 set-group-ID 位,或者如果檔案系統以 BSD 組語義掛載,則新節點將從其父目錄繼承組所有權;否則,它將由程序的有效組 ID 擁有。
在 Linux 下,此呼叫不能用於建立目錄。應該使用 mkdir(2) 建立目錄,使用 mkfifo(2) 建立 FIFO。
NFS 底層協議中存在許多不完善之處。其中一些會影響 mknod()。
fcntl (2)
mkdir (2)
mknodat (2)
mount (2)
path_resolution (2)
socket (2)
stat (2)
umask (2)
unlink (2)
廣告