unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-5.9)
Page:
Section:
Apropos / Subsearch:
optional field



System Calls                                             mknod(2)



NAME
     mknod - make a directory, or a special or ordinary file

SYNOPSIS
     #include <sys/stat.h>

     int mknod(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 initialized 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 opera-
     tion of the following values:

     S_ISUID       04000       Set user ID on execution.
     S_ISGID       020#0       Set group ID on execution if  #  is
                               7,  5,  3,  or  1. Enable mandatory
                               file/record locking if # is  6,  4,
                               2, or 0
     S_ISVTX       01000       On directories, restricted deletion
                               flag;  on  regular  files  on a UFS
                               file system, do not cache flag.
     S_IRWXU       00700       Read, write, execute by owner.
     S_IRUSR       00400       Read by owner.
     S_IWUSR       00200       Write by owner.
     S_IXUSR       00100       Execute (search if a directory)  by
                               owner.
     S_IRWXG       00070       Read, write, execute by group.
     S_IRGRP       00040       Read by group.
     S_IWGRP       00020       Write by group.
     S_IXGRP       00010       Execute by group.



SunOS 5.9           Last change: 19 May 1999                    1






System Calls                                             mknod(2)



     S_IRWXO       00007       Read, write,  execute  (search)  by
                               others.
     S_IROTH       00004       Read by others.
     S_IWOTH       00002       Write by others
     S_IXOTH       00001       Execute 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 effec-
     tive group ID of the process.  However, if the  S_ISGID  bit
     is  set  in  the  parent directory, 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
     character  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.

RETURN VALUES
     Upon successful completion, mknod() returns 0. Otherwise, it
     returns -1, the new file is not created, and errno is set to
     indicate the error.

ERRORS
     The mknod() function will fail if:

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

     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.




SunOS 5.9           Last change: 19 May 1999                    2






System Calls                                             mknod(2)



     EINTR A signal  was  caught  during  the  execution  of  the
           mknod() function.

     EINVAL
           An invalid argument exists.

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

     ELOOP Too many symbolic links were encountered in  translat-
           ing 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 alloca-
           tion resources.

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

     EPERM The effective user  of  the  calling  process  is  not
           super-user.

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

     The mknod() function may fail if:

     ENAMETOOLONG
           Pathname resolution of a  symbolic  link  produced  an
           intermediate result whose length exceeds PATH_MAX.

USAGE
     Normally, applications should use the  mkdir(2)  routine  to
     make  a directory, since the function mknod() may not estab-
     lish directory entries for the directory itself (.) and  the
     parent  directory  (..), and appropriate permissions are not
     required. Similarly,  mkfifo(3C) should be used in place  of
     mknod() in order to create FIFOs.



SunOS 5.9           Last change: 19 May 1999                    3






System Calls                                             mknod(2)



     The mknod() function may be invoked  only  by  a  privileged
     user for file types other than FIFO special.

     When a UFS file system is mounted with logging enabled, file
     system  transactions  that  free blocks from files might not
     actually add those freed blocks to the  file  system's  free
     list  until  some  unspecified  time  in  the  future.  This
     behavior improves file system performance but does not  con-
     form  to the POSIX, Single UNIX Specification, SPARC Confor-
     mance Definition, System  V  Application  Binary  Interface,
     System  V Interface Definition, and X/Open Portability Guide
     Standards, which  require  that  freed  space  be  available
     immediately.  To enable standards conformance regarding file
     deletions or to address the problem of  not  being  able  to
     grow  files  on a relatively full UFS file system even after
     files  have  been  deleted,   disable   UFS   logging   (see
     mount_ufs(1M).

SEE ALSO
     mount_ufs(1M),  chmod(2),   creat(2),   exec(2),   mkdir(2),
     open(2),   stat(2),   umask(2),   makedev(3C),   mkfifo(3C),
     stat(3HEAD)

































SunOS 5.9           Last change: 19 May 1999                    4