INTRO.2
上传用户:jnzhq888
上传日期:2007-01-18
资源大小:51694k
文件大小:16k
- ." Copyright (c) 1980,1983,1986 Regents of the University of California.
- ." All rights reserved. The Berkeley software License Agreement
- ." specifies the terms and conditions for redistribution.
- ."
- ." @(#)intro.2 6.7 (Berkeley) 5/23/86
- ."
- .TH INTRO 2 "June 30, 1986"
- .UC 4
- .de en
- .HP
- \$1 \$2 \$3
- .br
- ..
- .SH NAME
- intro, errno - introduction to system calls and error numbers
- .SH SYNOPSIS
- .B "#include <errno.h>"
- .SH DESCRIPTION
- This section describes all of the system calls. Most
- of these calls have one or more error returns.
- An error condition is indicated by an otherwise impossible return
- value. This is almost always -1; the individual descriptions
- specify the details.
- Note that a number of system calls overload the meanings of these
- error numbers, and that the meanings must be interpreted according
- to the type and circumstances of the call.
- .PP
- As with normal arguments, all return codes and values from
- functions are of type integer unless otherwise noted.
- An error number is also made available in the external
- variable fBerrnofP, which is not cleared
- on successful calls.
- Thus fBerrnofP should be tested only after an error has occurred.
- .PP
- The following is a complete list of the errors and their
- names as given in
- .RI < sys/errno.h >:
- .en 0 OK "Error 0
- Unused. (The symbol "OK" is only used inside the kernel source.)
- .en 1 EPERM "Not owner
- Typically this error indicates
- an attempt to modify a file in some way forbidden
- except to its owner or super-user.
- It is also returned for attempts
- by ordinary users to do things
- allowed only to the super-user.
- .en 2 ENOENT "No such file or directory
- This error occurs when a file name is specified
- and the file should exist but doesn't, or when one
- of the directories in a path name does not exist.
- .en 3 ESRCH "No such process
- The process or process group whose number was given
- does not exist, or any such process is already dead.
- .en 4 EINTR "Interrupted system call
- An asynchronous signal (such as interrupt or quit)
- that the user has elected to catch
- occurred during a system call.
- If execution is resumed
- after processing the signal
- and the system call is not restarted,
- it will appear as if the interrupted system call
- returned this error condition.
- .en 5 EIO "I/O error
- Some physical I/O error occurred during an I/O operation, usually
- .B read
- or
- .BR write .
- Operations on file descriptors that refer to devices that are forcefully
- taken away or in a bad state will also provoke this error.
- .en 6 ENXIO "No such device or address
- I/O on a special file refers to a subdevice that does not
- exist,
- or beyond the limits of the device.
- It may also occur when, for example, an illegal tape drive
- unit number is selected
- or a disk pack is not loaded on a drive.
- .en 7 E2BIG "Arg list too long
- An argument list longer than ARG_MAX bytes is presented to
- .BR execve .
- ARG_MAX is set to 4096 bytes for 16-bit Minix, 16384 bytes for 32-bit
- Minix, and unlimited for Minix-vmd as these systems are released.
- .en 8 ENOEXEC "Exec format error
- A request is made to execute a file
- that, although it has the appropriate permissions,
- does not start with a valid magic number, (see
- .BR a.out (5)).
- .en 9 EBADF "Bad file number
- Either a file descriptor refers to no
- open file,
- or a read (resp. write) request is made to
- a file that is open only for writing (resp. reading).
- .en 10 ECHILD "No children
- .B Wait
- and the process has no
- living or unwaited-for children.
- .en 11 EAGAIN "Resource temporarily unavailable
- In a
- .B fork,
- the system's process table is full or the user is not allowed to create
- any more processes, otherwise an operation that would cause a process to
- block was attempted on an object in non-blocking mode (see fBfcntlfP(2)).
- .en 12 ENOMEM "Not enough core
- During an
- .B execve
- or
- .B brk,
- a program asks for more (virtual) memory than the system is
- able to supply,
- or a process size limit would be exceeded.
- The maximum size
- of the data+stack segment is set by the
- .BR chmem (1)
- program. For Minix-vmd a small data+stack size is increased to 3 megabytes
- when a program is executed.
- .en 13 EACCES "Permission denied
- An attempt was made to access a file in a way forbidden
- by the protection system. Also an attempt to open a device for writing
- that is physically write protected.
- .en 14 EFAULT "Bad address
- An argument of a system call is outside the address space allocated to a
- process.
- .en 15 ENOTBLK "Block device required
- A plain file was mentioned where a block device was required,
- e.g., in
- .BR mount .
- .en 16 EBUSY "Resource busy
- An attempt to mount a device that was already mounted or
- an attempt was made to dismount a device
- on which there is an active file
- (open file, current directory, mounted-on file, or active text segment).
- A request was made to an exclusive access device that was already in use.
- .en 17 EEXIST "File exists
- An existing file was mentioned in an inappropriate context,
- e.g.,
- .BR link .
- .en 18 EXDEV "Cross-device link
- A hard link to a file on another device
- was attempted.
- .en 19 ENODEV "No such device
- An attempt was made to access a device that is not configured by the system,
- i.e., there is no driver for the device.
- .en 20 ENOTDIR "Not a directory
- A non-directory was specified where a directory
- is required,
- for example, in a path name or
- as an argument to
- .BR chdir .
- .en 21 EISDIR "Is a directory
- An attempt to write on a directory.
- .en 22 EINVAL "Invalid argument
- Some invalid argument:
- dismounting a non-mounted
- device,
- mentioning an unknown signal in
- .B signal,
- or some other argument inappropriate for the call.
- Also set by math functions, (see
- .BR math (3)).
- .en 23 ENFILE "File table overflow
- The system's table of open files is full,
- and temporarily no more
- .I opens
- can be accepted.
- .en 24 EMFILE "Too many open files
- The limit on the number of open files per process, OPEN_MAX, is reached.
- As released, this limit is 20 for Minix, and 30 for Minix-vmd.
- .en 25 ENOTTY "Not a typewriter
- The file mentioned in an
- .B ioctl
- is not a terminal or one of the
- devices to which this call applies. (Often seen error from programs with
- bugs in their error reporting code.)
- .en 26 ETXTBSY "Text file busy
- Attempt to execute a program that is open for writing. Obsolete under Minix.
- .en 27 EFBIG "File too large
- The size of a file exceeded the maximum (little over 64 megabytes for
- the V2 file system).
- .en 28 ENOSPC "No space left on device
- A
- .B write
- to an ordinary file, the creation of a
- directory or symbolic link, or the creation of a directory
- entry failed because no more disk blocks are available
- on the file system, or the allocation of an inode for a newly
- created file failed because no more inodes are available
- on the file system.
- .en 29 ESPIPE "Illegal seek
- An
- .B lseek
- was issued to a pipe or TCP/IP channel.
- This error may also be issued for
- other non-seekable devices.
- .en 30 EROFS "Read-only file system
- An attempt to modify a file or directory
- was made
- on a device mounted read-only.
- .en 31 EMLINK "Too many links
- An attempt to make more than a certain number of hard links to a file. The
- advertized maximum, LINK_MAX, is 127, but Minix-vmd uses a much larger
- maximum of 32767 for the V2 file system.
- .en 32 EPIPE "Broken pipe
- A write on a pipe or TCP/IP channel for which there is no process
- to read the data.
- This condition normally generates the signal SIGPIPE;
- the error is returned if the signal is caught or ignored.
- .en 33 EDOM "Math argument
- The argument of a function in the math package
- is out of the domain of the function.
- .en 34 ERANGE "Result too large
- The value of a function in the math package
- is unrepresentable within machine precision.
- .en 35 EDEADLK "Resource deadlock avoided
- A process attempts to place a blocking lock on a file that is already
- locked by another process and that process is waiting for the first
- process to unlock a file that first process already has a lock on.
- (The classic "lock A, lock B" by process 1, and "lock B, lock A" by
- process 2.)
- .en 36 ENAMETOOLONG "File name too long"
- The path name exceeds PATH_MAX characters. PATH_MAX equals 255 as
- distributed.
- .en 37 ENOLCK "No locks available
- The system's table of active locks is full.
- .en 38 ENOSYS "Function not implemented
- The system call is not supported. Either an old program uses an obsolete
- call, or a program for a more capable system is run on a less capable
- system.
- .en 39 ENOTEMPTY "Directory not empty"
- A directory with entries other than *(lq.*(rq and *(lq..*(rq
- was supplied to a remove directory or rename call.
- .en 40 ELOOP "Too many symbolic links"
- A path name lookup involved more than SYMLOOP symbolic links. SYMLOOP
- equals 8 as distributed.
- (Minix-vmd)
- .en 50 EPACKSIZE "Invalid packet size
- .en 51 EOUTOFBUFS "Not enough buffers left
- .en 52 EBADIOCTL "Illegal ioctl for device
- .en 53 EBADMODE "Bad mode in ioctl
- .en 54 EWOULDBLOCK "Would block
- .en 55 EBADDEST "Bad destination address
- .en 56 EDSTNOTRCH "Destination not reachable
- .en 57 EISCONN "Already connected
- .en 58 EADDRINUSE "Address in use
- .en 59 ECONNREFUSED "Connection refused
- .en 60 ECONNRESET "Connection reset
- .en 61 ETIMEDOUT "Connection timed out
- .en 62 EURG "Urgent data present
- .en 63 ENOURG "No urgent data present
- .en 64 ENOTCONN "No connection
- .en 65 ESHUTDOWN "Already shutdown
- .en 66 ENOCONN "No such connection
- .en 67 EINPROGRESS "Operation now in progress
- .en 68 EALREADY "Operation already in progress
- .ig
- .en XXX EDQUOT "Disc quota exceeded"
- A
- .B write
- to an ordinary file, the creation of a
- directory or symbolic link, or the creation of a directory
- entry failed because the user's quota of disk blocks was
- exhausted, or the allocation of an inode for a newly
- created file failed because the user's quota of inodes
- was exhausted.
- .en XXX ESTALE "Stale NFS file handle"
- A client referenced a an open file, when the file has been deleted.
- .en XXX EREMOTE "Too many levels of remote in path"
- An attempt was made to remotely mount a file system into a path which
- already has a remotely mounted component.
- ..
- .SH DEFINITIONS
- .TP 5
- Process ID
- .br
- Each active process in the system is uniquely identified by a positive
- integer called a process ID. The range of this ID is from 1 to 29999.
- The special process with process ID 1 is
- .BR init ,
- the ancestor of all processes.
- .TP 5
- Parent process ID
- .br
- A new process is created by a currently active process; (see
- .BR fork (2)).
- The parent process ID of a process is the process ID of its creator,
- unless the creator dies, then
- .B init
- becomes the parent of the orphaned process.
- .TP 5
- Process Group ID
- .br
- Each active process is a member of a process group that is identified by
- a positive integer called the process group ID. This is the process
- ID of the group leader. This grouping permits the signaling of related
- processes (see
- .BR kill (2)).
- .TP 5
- Real User ID and Real Group ID
- .br
- Each user on the system is identified by a positive integer
- termed the real user ID.
- .IP
- Each user is also a member of one or more groups.
- One of these groups is distinguished from others and
- used in implementing accounting facilities. The positive
- integer corresponding to this distinguished group is termed
- the real group ID.
- (Under standard Minix this is the only group a process can be a member of.)
- .IP
- All processes have a real user ID and real group ID.
- These are initialized from the equivalent attributes
- of the process that created it.
- .TP 5
- Effective User Id, Effective Group Id, and Access Groups
- .br
- Access to system resources is governed by three values:
- the effective user ID, the effective group ID, and the
- group access list.
- .IP
- The effective user ID and effective group ID are initially the
- process's real user ID and real group ID respectively. Either
- may be modified through execution of a set-user-ID or set-group-ID
- file (possibly by one its ancestors) (see
- .BR execve (2)).
- .IP
- The group access list is an additional set of group ID's
- used only in determining resource accessibility. Access checks
- are performed as described below in ``File Access Permissions''.
- The maximum number of additional group ID's is NGROUPS_MAX.
- For Minix this is 0, but Minix-vmd supports a list of up to 16
- additional group ID's. (Also known as ``supplemental'' group ID's.)
- .TP 5
- Super-user
- .br
- A process is recognized as a
- .I super-user
- process and is granted special privileges if its effective user ID is 0.
- .TP 5
- Descriptor
- .br
- An integer assigned by the system when a file or device is referenced
- by
- .BR open (2),
- .BR dup (2)
- or
- .BR fcntl (2)
- which uniquely identifies an access path to that file or device from
- a given process or any of its children.
- .TP 5
- File Descriptor
- Older, and often used name for a descriptor.
- .TP 5
- File Name
- .br
- Names consisting of up to NAME_MAX characters may be used to name
- an ordinary file, special file, or directory. NAME_MAX is the maximum
- of the maximum file name lengths of the supported file systems.
- Excess characters are ignored when too long file names are used for
- files in a given file system.
- The maximum file name length of the V1 and V2 file systems
- is 14 characters. The Minix-vmd "flex" variants of V1 and V2 have a
- 60 character maximum.
- .IP
- The characters in a file name may assume any value representable in
- eight bits excluding 0 (null) and the ASCII code for / (slash).
- .IP
- Note that it is generally unwise to use one of e'"<>();~$^&*|{}[]?
- as part of file names because of the special meaning attached to these
- characters by the shell.
- .TP 5
- Path Name
- .br
- A path name is a null-terminated character string starting with an
- optional slash (/), followed by zero or more directory names separated
- by slashes, optionally followed by a file name.
- The total length of a path name must be less than PATH_MAX characters
- (255 as distributed.)
- .IP
- If a path name begins with a slash, the path search begins at the
- .I root
- directory.
- Otherwise, the search begins from the current working directory.
- A slash by itself names the root directory. A null pathname is
- illegal, use "." to refer to the current working directory.
- .TP 5
- Directory
- .br
- A directory is a special type of file that contains entries
- that are references to other files.
- Directory entries are called links. By convention, a directory
- contains at least two links, . and .., referred to as
- .I dot
- and
- .I dot-dot
- respectively. Dot refers to the directory itself and
- dot-dot refers to its parent directory.
- .TP 5
- Root Directory and Current Working Directory
- .br
- Each process has associated with it a concept of a root directory
- and a current working directory for the purpose of resolving path
- name searches. A process's root directory need not be the root
- directory of the root file system.
- .TP 5
- File Access Permissions
- .br
- Every file in the file system has a set of access permissions.
- These permissions are used in determining whether a process
- may perform a requested operation on the file (such as opening
- a file for writing). Access permissions are established at the
- time a file is created. They may be changed at some later time
- through the
- .BR chmod (2)
- call.
- .IP
- File access is broken down according to whether a file may be: read,
- written, or executed. Directory files use the execute
- permission to control if the directory may be searched.
- .IP
- File access permissions are interpreted by the system as
- they apply to three different classes of users: the owner
- of the file, those users in the file's group, anyone else.
- Every file has an independent set of access permissions for
- each of these classes. When an access check is made, the system
- decides if permission should be granted by checking the access
- information applicable to the caller.
- .IP
- Read, write, and execute/search permissions on
- a file are granted to a process if:
- .IP
- The process's effective user ID is that of the super-user.
- .IP
- The process's effective user ID matches the user ID of the owner
- of the file and the owner permissions allow the access.
- .IP
- The process's effective user ID does not match the user ID of the
- owner of the file, and either the process's effective
- group ID matches the group ID
- of the file, or the group ID of the file is in
- the process's group access list,
- and the group permissions allow the access.
- .IP
- Neither the effective user ID nor effective group ID
- and group access list of the process
- match the corresponding user ID and group ID of the file,
- but the permissions for ``other users'' allow access.
- .IP
- Otherwise, permission is denied.
- .SH SEE ALSO
- .BR intro (3),
- .BR strerror (3).