mknodat(2) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

mknodat(2)

mknod(2)                         System Calls                         mknod(2)

NAME
       mknod, mknodat - make a special file

SYNOPSIS
       #include <sys/stat.h>

       int mknod(const char *path, mode_t mode, dev_t dev);

       int mknodat(int fd, const char *path, mode_t mode, dev_t dev);

DESCRIPTION
       The  mknod() function creates a new file named by the path name pointed
       to by path. The file type and permissions of the new file are  initial‐
       ized from mode.


       The  file  type  is specified in mode by the S_IFMT bits, which must be
       set to one of the following values:

       S_IFIFO    FIFO special


       S_IFCHR    character special


       S_IFDIR    directory


       S_IFBLK    block special


       S_IFREG    ordinary file



       The file access permissions are specified in mode by the 0007777  bits,
       and  may be constructed by a bitwise OR operation of the following val‐
       ues:

       tab(); lw(1.08i) lw(0.89i) lw(3.53i) S_ISUID04000Set user ID on  execu‐
       tion.   S_ISGID020#0T{ Set group ID on execution if # is 7, 5, 3, or 1.
       Enable mandatory file/record  locking  if  #  is  6,  4,  2,  or  0  T}
       S_ISVTX01000T{  On  directories,  restricted  deletion flag; on regular
       files on a UFS file system, do not cache  flag.   T}  S_IRWXU00700Read,
       write, execute by owner.  S_IRUSR00400Read by owner.  S_IWUSR00200Write
       by owner.  S_IXUSR00100T{ Execute (search if a directory) by owner.  T}
       S_IRWXG00070Read,  write, execute by group.  S_IRGRP00040Read by group.
       S_IWGRP00020Write  by  group.   S_IXGRP00010Execute  by  group.   S_IR‐
       WXO00007Read,  write,  execute (search) by others.  S_IROTH00004Read by
       others.  S_IWOTH00002Write by others S_IXOTH00001Execute by others.



       The owner ID of the file is  set  to  the  effective  user  ID  of  the
       process.  The  group ID of the file is set to the effective group ID of
       the process. However, if the S_ISGID bit is set in  the  parent  direc‐
       tory,  then  the  group ID of the file is inherited from the parent. If
       the group ID of the new file does not match the effective group  ID  or
       one of the supplementary group IDs, the S_ISGID bit is cleared.


       The  access  permission bits of mode are modified by the process's file
       mode creation mask: all bits set in the process's  file  mode  creation
       mask are cleared (see umask(2)). If mode indicates a block or character
       special file, dev is a configuration-dependent specification of a char‐
       acter or block I/O device. If mode does not indicate a block special or
       character special device, dev is ignored. See makedev(3C).


       If path is a symbolic link, it is not followed.


       Upon  successful completion, mknod() marks for update the last data ac‐
       cess, last data modification, and last file status change timestamps of
       the file. Also, the last data modification and last file status  change
       timestamps  of  the directory that contains the new entry is marked for
       update.


       Only a process with the {PRIV_SYS_DEVICES} privilege may invoke mknod()
       for file types other than FIFO special. See privileges(7).


       The mknodat() function is equivalent to the mknod() function except  in
       the  case  where path specifies a relative path. In this case the newly
       created directory, special file, or regular file is located relative to
       the directory associated with the file descriptor  fd  instead  of  the
       current  working  directory.  If the file descriptor was opened without
       O_SEARCH, the function checks whether directory searches are  permitted
       using  the current permissions of the directory underlying the file de‐
       scriptor. If the file descriptor was opened with O_SEARCH, the function
       does not perform the check.


       If mknodat() is passed the special value AT_FDCWD in the fd  parameter,
       the  current working directory is used and the behavior is identical to
       a call to mknod().

RETURN VALUES
       Upon successful completion, mknod() and mknodat() return 0.  Otherwise,
       it  returns  −1, the new file is not created, and errno is set to indi‐
       cate the error.

ERRORS
       The mknod() and mknodat() functions will fail if:

       EACCES          A component of the path prefix  denies  search  permis‐
                       sion,  or  write permission is denied on the parent di‐
                       rectory.


       EDQUOT          The directory where the new file entry is being  placed
                       cannot  be  extended  because  the user's quota of disk
                       blocks on that file system has been exhausted,  or  the
                       user's  quota  of  inodes  on the file system where the
                       file is being created has been exhausted.


       EEXIST          The named file exists.


       EFAULT          The path argument points to an illegal address.


       EINTR           A signal was caught during the execution of  the  func‐
                       tion.


       EINVAL          An invalid argument exists.


       EIO             An I/O error occurred while accessing the file system.


       ELOOP           Too many symbolic links were encountered in translating
                       path.


       ENAMETOOLONG    The  length of the path argument exceeds {PATH_MAX}, or
                       the length of a path component exceeds {NAME_MAX} while
                       _POSIX_NO_TRUNC is in effect.


       ENOENT          A component of the path prefix specified by  path  does
                       not  name  an  existing  directory  or path is an empty
                       string.


       ENOLINK         The path argument points to a remote  machine  and  the
                       link to that machine is no longer active.


       ENOSPC          The directory that would contain the new file cannot be
                       extended  or  the file system is out of file allocation
                       resources.


       ENOTDIR         A component of the path prefix is not a directory.


       EPERM           Not all required privileges are asserted in the  effec‐
                       tive set of the calling process.


       EROFS           The directory in which the file is to be created is lo‐
                       cated on a read-only file system.



       The mknodat() function will fail if:

       EACCES    fd  was  not  opened with O_SEARCH and the permissions of the
                 directory underlying fd do not permit directory searches.


       EBADF     The path argument does not specify an absolute path  and  the
                 fd  argument  is neither AT_FDCWD nor a valid file descriptor
                 open for reading or searching.



       The mknod() and mknodat() functions may fail if:

       ELOOP           More than {SYMLOOP_MAX} symbolic links were encountered
                       during resolution of the path argument.


       ENAMETOOLONG    The length of a pathname exceeds {PATH_MAX},  or  path‐
                       name resolution of a symbolic link produced an interme‐
                       diate result with a length that exceeds {PATH_MAX}.



       The mknodat() function may fail if:

       ENOTDIR    The  path argument is not an absolute path and fd is neither
                  AT_FDCWD nor a file descriptor associated with a directory.


USAGE
       The mknod() function can be invoked for file types other than FIFO spe‐
       cial only by a process with the {PRIV_SYS_DEVICES}  privilege  asserted
       in its effective set.


       Applications should use the mkdir(2) function to create a directory be‐
       cause  it  does  not  require  non-basic privileges and because mknod()
       might not establish directory entries for the directory itself (.)  and
       the parent directory (..).


       The mkfifo(3C) function should be used to create FIFOs.


       Doors are created using door_create(3C) and can be attached to the file
       system using fattach(3C).


       Symbolic links can be created using symlink(2).


       An endpoint for communication can be created using socket(3C).

ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:

       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ Interface  StabilityCommitted  _  MT-LevelAsync-Signal-
       Safe _ StandardSee standards(7).


SEE ALSO
       chmod(2),  creat(2),  exec(2),  mkdir(2), open(2), stat(2), symlink(2),
       umask(2),  door_create(3C),   fattach(3C),   makedev(3C),   mkfifo(3C),
       socket(3C), stat.h(3HEAD), attributes(7), privileges(7), standards(7)

HISTORY
       The  mknodat()  function  was  added to Solaris in the Solaris 11.0 re‐
       lease.


       The mknod() function has been included in all Sun and  Oracle  releases
       of Solaris.

Oracle Solaris 11.4               30 Jan 2023                         mknod(2)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3