Make a new filesystem entry point
Synopsis:
#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
int mknod( const char * path,
mode_t mode,
dev_t dev );
Arguments:
- path
- The pathname that you want to use for the file.
- mode
- A set of bits that define the file type and access permissions that you want to use.
The valid file types are:
- S_IFDIR — create a directory.
- S_IFIFO — create a FIFO.
For more information, see the entry for
struct stat.
- dev
- Ignored.
Library:
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
Description:
The mknod() makes a file, named path,
using the file type encoded in the mode argument.
Supported file types are directories and FIFOs.
Note:
This function is included to enhance portability with software written for Unix-compatible operating systems.
For POSIX portability, use
mkdir()
or
mkfifo()
instead.
To make a directory with read-write-execute permissions for everyone, you could use the following:
mknod (name, S_IFDIR | 0777, 0);
Returns:
- 0
- Success.
- -1
- An error occurred (errno is set).
Errors:
- EACCES
- A component of the path prefix denies search permission,
or write permission is denied for the parent directory.
- EEXIST
- The named file already exists.
- ELOOP
- Too many levels of symbolic links or prefixes.
- EMLINK
- The link count of the parent directory would exceed LINK_MAX.
- ENAMETOOLONG
- The length of the path string exceeds
PATH_MAX, or a pathname component is longer than NAME_MAX.
- ENOENT
- A component of the path prefix doesn't exist,
or the path arguments points to an empty string.
- ENOSPC
-
The filesystem doesn't contain enough space to hold the contents of
the new directory or to extend the parent directory,
or the maximum limit of files and directories has been reached.
- ENOSYS
- The mknod() function isn't implemented for the filesystem specified in
path.
- ENOTDIR
- A component of the path prefix isn't a directory.
- EROFS
- The named file resides on a read-only filesystem.
Examples:
/*
* Create special files as a directory or FIFO
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
int main( int argc, char** argv )
{
int c;
mode_t mode = 0666;
int ecode = 0;
if( argc == 1 ) {
printf( "Use: %s [-d directory] ... [-f fifo] ... \n",
argv[0] );
return( 0 );
}
while(( c = getopt( argc, argv, "d:f:" )) != -1 ) {
switch( c ) {
case 'd': mode = S_IFDIR | 0666; break;
case 'f': mode = S_IFIFO | 0666; break;
}
if( mknod( optarg, mode, 0 ) != 0 ) {
perror( optarg );
++ecode;
}
}
return( ecode );
}
Classification:
POSIX 1003.1
Safety: |
|
Cancellation point |
No |
Interrupt handler |
No |
Signal handler |
Yes |
Thread |
Yes |