HPlogo MPE/iX Developer's Kit Reference Manual Volume I: HP 3000 MPE/iX Computer Systems > Chapter 4  POSIX/iX Library Function Descriptions

mknod

» 

Technical documentation

Complete book in PDF
» Feedback

 » Table of Contents

 » Index

Make a FIFO special file.

Makes a directory, or a special or regular file.

Syntax

   #include <sys/stat.h>

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

Parameters

path

The pathname of a file.

mode

Specifies the file type and file access permission.

dev

Specifies the major and minor device numbers.

Return Values

0

Successful completion

-1

Error and errno is set to indicate the error.

Description

mknod() creates a new file named by the path name pointed to by path. The mode of the new file is specified by the mode argument.

Symbolic constants defining the file type and file access permission bits are found in the <sys/stat.h> header file and are used to construct the mode argument. The value of the mode argument should be the bit-wise inclusive OR of the values of the desired file type, miscellaneous mode bits, and access permissions. See stat(5) for a description of the components of the file mode.

The owner ID of the file is set to the effective-user-ID of the process. If the set-group-ID bit of the parent directory is set, the new file's group ID is set to the group ID of the parent directory. Otherwise, the new file's group ID is set to the effective-group-ID of the process.

The file access permission bits of mode are modified by the process's file mode creation mask: for each bit set in the process's file mode creation mask, the corresponding bit in the file's mode is cleared (see umask(2)).

The new file is created with three base access-control-list (ACL) entries, corresponding to the file access permission bits.

The dev argument is meaningful only if mode indicates a block or character special file, and is ignored otherwise. It is an implementation- and configuration-dependent specification of a character or block I/O device. The value of dev is created by using the makedev() macro defined in <sys/mknod.h>. The makedev() macro takes as arguments the major and minor device numbers, and returns a device identification number which is of type dev_t. The value and interpretation of the major and minor device numbers are implementation-dependent. For more information, see mknod(5) and the System Administration manuals for your system.

Only users with appropriate privileges can invoke mknod for file types other than FIFO files.

Implementation Considerations

Proper discretion should be used when using mkrnod to create generic device files in an HP Clustered Environment. A generic device file accessed from different cnodes in a cluster applies to different physical devices. Thus the file's ownership and permissions might not be appropriate in the context of every individual cnode in the cluster.

Errors

If an error occurs, errno is set to one of the following values:

EACCESCAUSE

One of the following:

  • The directory in which path would be created denies write permission, mode is for a FIFO file and the caller does not have appropriate privileges.

  • A component of the path prefix denies search permission.

 ACTION

One of the following:

  • Make sure that the calling process has search permission to all components of t he pathname.

  • Make sure that the calling process has execute permission to the file.

EEXISTCAUSE The named path already exists.
 ACTION Make sure that path specifies a directory that does not already exist.
EFAULTCAUSE The path argument points outside the process's allocated address space. The reliable detection of this error is implementation dependent.
 ACTION Make sure that the pointer is correctly initialized.
ELOOPCAUSE Too many symbolic links were encountered in translating the path name.
 ACTION Make sure that there is not a loop in the symbolic links that loops more than POSIX_SYMLOOP.
ENAMETOOLONGCAUSE The length of the specified path name exceeds PATH_MAX bytes, or the length of a component of the path name exceeds NAME_MAX bytes while _POSIX_NO_TRUNC is in effect.
 ACTION Make sure that both the component's length and the full pathname length do not exceed the {NAME_MAX} or {PATH_MAX} limits.
ENOENTCAUSE

Either of the following:

  • The path argument is null.

  • A component of the path prefix does not exist.

 ACTION Specify a valid pathname.
ENOSPCCAUSE Not enough space on the file system.
 ACTION Extend accounting limits for the directory in which the file is located, or fr ee up disk space.
ENOTDIRCAUSE A component of the path prefix is not a directory.
 ACTION Specify a valid pathname.
EPERMCAUSE The effective-user-ID of the process does not match that of the super-user, and the file type is not FIFO special.
 ACTION Refer to the kill() function description for signal permission rules.
EROFSCAUSE The directory in which the file is to be created is located on a read-only file system.
 ACTION Create the slink on a writable volume (file system).

See Also

mknod(1M), chmod(2), exec(2), mkdir(2), setacl(2), umask(2), cdf(4), fs(4), acl(5), mknod(5), stat(5), types(5).

Feedback to webmaster