BSD 4_1_snap development
authorCSRG <csrg@ucbvax.Berkeley.EDU>
Sun, 17 May 1981 19:23:07 +0000 (11:23 -0800)
committerCSRG <csrg@ucbvax.Berkeley.EDU>
Sun, 17 May 1981 19:23:07 +0000 (11:23 -0800)
Work on file usr/man/man2/exec.2
Work on file usr/man/man2/stat.2
Work on file usr/man/man2/chmod.2
Work on file usr/man/man2/vfork.2v
Work on file usr/man/man2/nice.2
Work on file usr/man/man2/kill.2

Synthesized-from: CSRG/cd1/4.1.snap

usr/man/man2/chmod.2 [new file with mode: 0644]
usr/man/man2/exec.2 [new file with mode: 0644]
usr/man/man2/kill.2 [new file with mode: 0644]
usr/man/man2/nice.2 [new file with mode: 0644]
usr/man/man2/stat.2 [new file with mode: 0644]
usr/man/man2/vfork.2v [new file with mode: 0644]

diff --git a/usr/man/man2/chmod.2 b/usr/man/man2/chmod.2
new file mode 100644 (file)
index 0000000..09c20b5
--- /dev/null
@@ -0,0 +1,64 @@
+.TH CHMOD 2 
+.UC 4
+.SH NAME
+chmod \- change mode of file
+.SH SYNOPSIS
+.nf
+.B chmod(name, mode)
+.B char *name;
+.fi
+.SH DESCRIPTION
+The file whose name
+is given as the null-terminated string pointed to by
+.I name
+has its mode changed to
+.IR mode .
+Modes are constructed by
+.IR or ing
+together some
+combination of the following:
+.PP
+.RS
+ 04000 set user ID on execution
+ 02000 set group ID on execution
+ 01000 save text image after execution
+ 00400 read by owner
+ 00200 write by owner
+ 00100 execute (search on directory) by owner
+ 00070 read, write, execute (search) by group
+ 00007 read, write, execute (search) by others
+.RE
+.PP
+If an executable file is set up for sharing (this is the default)
+then mode 1000 prevents the system from
+abandoning the swap-space image of the program-text portion
+of the file when its last user
+terminates.
+Ability to set this bit is restricted to the super-user
+since swap space is consumed
+by the images.
+See
+.IR sticky (8).
+.PP
+Only the owner of a file (or the super-user) may change the mode.
+Only the super-user can set the 1000 mode.
+.PP
+On some systems,
+writing or changing the owner of a file
+turns off the set-user-id bit.
+This makes the system somewhat more secure
+by protecting set-user-id files
+from remaining set-user-id if they are modified,
+at the expense of a degree of compatibility.
+.SH "SEE ALSO"
+chmod(1)
+.SH DIAGNOSTIC
+Zero is returned if the mode is changed;
+\-1 is returned if
+.I name
+cannot be found or if the current user
+is neither the owner of the file nor the super-user.
+.SH "ASSEMBLER (PDP-11)"
+(chmod = 15.)
+.br
+.B sys chmod; name; mode
diff --git a/usr/man/man2/exec.2 b/usr/man/man2/exec.2
new file mode 100644 (file)
index 0000000..bc02fce
--- /dev/null
@@ -0,0 +1,334 @@
+.TH EXEC 2  4/1/81
+.UC 4
+.SH NAME
+execl, execv, execle, execve, execlp, execvp, exec, exece, environ \- execute a file
+.SH SYNOPSIS
+.nf
+.B execl(name, arg0, arg1, ..., argn, 0)
+.B char *name, *arg0, *arg1, ..., *argn;
+.PP
+.B execv(name, argv)
+.B char *name, *argv[];
+.PP
+.B "execle(name, arg0, arg1, ..., argn, 0, envp)"
+.B "char *name, *arg0, *arg1, ..., *argn, *envp[];"
+.PP
+.B execve(name, argv, envp)
+.B char *name, *argv[], *envp[];
+.PP
+.B extern char **environ;
+.fi
+.SH DESCRIPTION
+.I Exec
+in all its forms
+overlays the calling process with the named file, then
+transfers to the
+entry point of the core image of the file.
+There can be no return from a successful exec; the calling
+core image is lost.
+.PP
+Files remain open across
+.I exec
+unless explicit arrangement has been made;
+see
+.IR ioctl (2).
+Ignored/held signals remain ignored/held across
+these calls, but
+signals that are caught (see
+.IR signal (2))
+are reset
+to their default values.
+.PP
+Each user has a
+.I real
+user ID and group ID and an
+.I effective
+user ID and group ID.
+The
+real
+ID
+identifies the person using the system;
+the
+effective
+ID
+determines his access privileges.
+.I Exec
+changes the effective user and group ID to
+the owner of the executed file if the file has the `set-user-ID'
+or `set-group-ID'
+modes.
+The
+real
+user ID is not affected.
+.PP
+The
+.I name
+argument
+is a pointer to the name of the file
+to be executed.
+The pointers
+.IR arg [ 0 ],
+.IR arg [ 1 "] ..."
+address null-terminated strings.
+Conventionally
+.IR arg [ 0 ]
+is the name of the
+file.
+.PP
+From C, two interfaces are available.
+.I execl
+is useful when a known file with known arguments is
+being called;
+the arguments to
+.I execl
+are the character strings
+constituting the file and the arguments;
+the first argument is conventionally
+the same as the file name (or its last component).
+A 0 argument must end the argument list.
+.PP
+The
+.I execv
+version is useful when the number of arguments is unknown
+in advance;
+the arguments to
+.I execv
+are the name of the file to be
+executed and a vector of strings containing
+the arguments.
+The last argument string must be followed
+by a 0 pointer.
+.PP
+When a C program is executed,
+it is called as follows:
+.PP
+.nf
+       main(argc, argv, envp)
+       int argc;
+       char **argv, **envp;
+.fi
+.PP
+where
+.IR argc ""
+is the argument count
+and
+.IR argv ""
+is an array of character pointers
+to the arguments themselves.
+As indicated,
+.IR argc ""
+is conventionally at least one
+and the first member of the array points to a
+string containing the name of the file.
+.PP
+.I Argv
+is directly usable in another
+.I execv
+because
+.IR argv [ argc ]
+is 0.
+.PP
+.I Envp
+is a pointer to an array of strings that constitute
+the
+.I environment
+of the process.
+Each string consists of a name, an \*(lq=\*(rq, and a null-terminated value.
+The array of pointers is terminated by a null pointer.
+The shell
+.IR sh (1)
+passes an environment entry for each global shell variable
+defined when the program is called.
+See
+.IR environ (5)
+for some conventionally
+used names.
+The C run-time start-off routine places a copy of
+.I envp
+in the global cell
+.I environ,
+which is used
+by
+.IR execv \ and \ execl
+to pass the environment to any subprograms executed by the
+current program.
+The
+.I exec
+routines use lower-level routines as follows
+to pass an environment explicitly:
+.RS
+.nf
+execve(file, argv, environ);
+execle(file, arg0, arg1, . . . , argn, 0, environ);
+.fi
+.RE
+.PP
+.I Execlp
+and
+.I execvp
+are called with the same arguments as
+.I execl
+and
+.I execv,
+but duplicate the shell's actions in searching for an executable
+file in a list of directories.
+The directory list is obtained from the environment.
+.PP
+To aid execution of command files of various programs,
+if the first two characters of the executable file are '#!' then
+.I exec
+attempts to read a pathname from the executable file and use
+that program as the command files command interpreter. For example, the
+following command file sequence would be used to begin a
+.I csh
+script:
+.RS
+.nf
+#! /bin/csh
+# This shell script computes the checksum on /dev/foobar
+#
+       ...
+.fi
+.RE
+A single parameter may be passed the interpreter, specified after the
+name of the interpreter; its length and the length of the name
+of the interpreter combined must not exceed 32 characters.
+The space (or tab) following the '#!' is mandatory, and the
+pathname must be explicit (no paths are searched).
+.SH FILES
+.ta \w'/bin/sh  'u
+/bin/sh        shell, invoked if command file found
+by
+.I execlp
+or
+.I execvp
+.SH "SEE ALSO"
+fork(2), environ(5), csh(1)
+.SH DIAGNOSTICS
+If the file cannot be found,
+if it is not executable,
+if it does not start with a valid magic number (see
+.IR a.out (5)),
+if maximum memory is exceeded,
+or if the arguments require too much space,
+a return
+constitutes the diagnostic;
+the return value is \-1.
+Even for the super-user,
+at least one of the execute-permission bits must be set for
+a file to be executed.
+.SH BUGS
+If
+.I execvp
+is called to execute a file that turns out to be a shell
+command file,
+and if it is impossible to execute the shell,
+the values of
+.I argv[0]
+and
+.I argv[\-1]
+will be modified before return.
+.SH "ASSEMBLER (PDP-11)"
+.DT
+(exec = 11.)
+.br
+.B sys exec; name; argv
+.PP
+(exece = 59.)
+.br
+.B sys exece; name; argv; envp
+.PP
+Plain
+.I exec
+is obsoleted by
+.I exece,
+but remains for historical reasons.
+.PP
+When the called file starts execution on the PDP11,
+the stack pointer points to a word containing the number of arguments.
+Just above
+this number is a list of pointers to the argument strings,
+followed by a null pointer, followed by the pointers to
+the environment strings and then another null pointer.
+The strings themselves follow;
+a 0 word is left at the very top of memory.
+.PP
+  sp\(->       nargs
+.br
+       arg0
+.br
+       ...
+.br
+       argn
+.br
+       0
+.br
+       env0
+.br
+       ...
+.br
+       envm
+.br
+       0
+.PP
+ arg0: <arg0\e0>
+.br
+       ...
+.br
+ env0: <env0\e0>
+.br
+       0
+.PP
+On the Interdata 8/32,
+the stack begins at a conventional place
+(currently 0xD0000)
+and grows upwards.
+After
+.I exec,
+the layout of data on the stack is as follows.
+.PP
+.nf
+       int     0
+ arg0: byte    ...
+       ...
+argp0: int     arg0
+       ...
+       int     0
+envp0: int     env0
+       ...
+       int     0
+ %2\(->        space   40
+       int     nargs
+       int     argp0
+       int     envp0
+ %3\(->
+.fi
+.PP
+This arrangement happens to conform well to C calling conventions.
+.PP
+On a VAX-11, the stack begins at
+.lg 0
+0x7ffff000
+.lg 1
+and grows towards lower numbered addresses.
+After
+.IR exec ,
+the layout of data on the stack is as follows.
+.PP
+.nf
+.ta \w' arg0:  'u
+ ap \(->
+ fp \(->
+ sp \(->       .long nargs
+       .long arg0
+       ...
+       .long argn
+       .long 0
+       .long env0
+       ...
+       .long envn
+       .long 0
+ arg0: .byte "arg0\e0"
+       ...
+ envn: .byte "envn\e0"
+       .long 0
diff --git a/usr/man/man2/kill.2 b/usr/man/man2/kill.2
new file mode 100644 (file)
index 0000000..670c1a2
--- /dev/null
@@ -0,0 +1,57 @@
+.TH KILL 2 5/11/81
+.UC 4
+.SH NAME
+kill \- send signal to a process
+.SH SYNOPSIS
+.B kill(pid, sig)
+.SH DESCRIPTION
+.I Kill
+sends the signal
+.I sig
+to the process specified by the
+process number
+.I pid.
+See
+.IR sigsys (2)
+for a list of signals.
+.PP
+The sending and receiving processes must
+have the same effective user ID, otherwise
+this call is restricted to the super-user.
+(A single exception is the signal SIGCONT which may be sent
+as described in
+.IR killpg (2),
+although it is usually sent using
+.I killpg
+rather than
+.IR kill ).
+.PP
+If the process number is 0,
+the signal is sent to all other processes in the
+sender's process group;
+see
+.IR tty (4)
+and also
+.IR killpg (2).
+.PP
+If the process number is \-1, and the user is the super-user,
+the signal is broadcast universally
+except to processes 0, 1, 2, the scheduler
+initialization, and pageout processes,
+and the process sending the signal.
+.PP
+Processes may send signals to themselves.
+.SH "SEE ALSO"
+sigsys(2), signal(2), kill(1), killpg(2), init(8)
+.SH DIAGNOSTICS
+Zero is returned if the process is killed;
+\-1 is returned if the process does not
+have the same effective user ID and the
+user is not super-user, or if the process
+does not exist.
+.SH "ASSEMBLER (PDP-11)"
+(kill = 37.)
+.br
+(process number in r0)
+.br
+.B sys kill; sig
diff --git a/usr/man/man2/nice.2 b/usr/man/man2/nice.2
new file mode 100644 (file)
index 0000000..973f384
--- /dev/null
@@ -0,0 +1,39 @@
+.TH NICE 2 
+.SH NAME
+nice \- set program priority
+.SH SYNOPSIS
+.B nice(incr)
+.SH DESCRIPTION
+The scheduling
+priority of the process is augmented by
+.IR incr .
+Positive priorities get less
+service than normal.
+Priority 10 is recommended to users
+who wish to execute long-running programs
+without flak from the administration.
+.PP
+Negative increments are ignored except on behalf of 
+the super-user.
+The priority is limited to the range
+\-20 (most urgent) to 20 (least).
+.PP
+The priority of a process is
+passed to a child process by
+.IR fork (2).
+For a privileged process to return to normal priority
+from an unknown state,
+.I nice
+should be called successively with arguments
+\-40 (goes to priority \-20 because of truncation),
+20 (to get to 0),
+then 0 (to maintain compatibility with previous versions
+of this call).
+.SH "SEE ALSO"
+nice(1), fork(2), renice(8)
+.SH "ASSEMBLER (PDP-11)"
+(nice = 34.)
+.br
+(priority in r0)
+.br
+.B sys nice
diff --git a/usr/man/man2/stat.2 b/usr/man/man2/stat.2
new file mode 100644 (file)
index 0000000..64ece6c
--- /dev/null
@@ -0,0 +1,94 @@
+.TH STAT 2 
+.SH NAME
+stat, fstat \- get file status
+.SH SYNOPSIS
+.nf
+.B #include <sys/types.h>
+.B #include <sys/stat.h>
+.PP
+.B stat(name, buf)
+.B char *name;
+.B struct stat *buf;
+.PP
+.B fstat(fildes, buf)
+.B struct stat *buf;
+.fi
+.SH DESCRIPTION
+.I Stat
+obtains detailed information about a named file.
+.I Fstat
+obtains the same information about an open file
+known by the file descriptor from a successful
+.I open, creat, dup
+or
+.IR pipe (2)
+call.
+.PP
+.I Name
+points to a null-terminated string naming
+a file;
+.I buf
+is the address of a buffer
+into which information is placed concerning the file.
+It is unnecessary to have any
+permissions at all with respect to the file, but all directories
+leading to the file must be searchable.
+The layout of the structure pointed to by buf
+as defined in
+.I <stat.h>
+is given below.
+.I St_mode 
+is encoded according to the `#define' statements.
+.PP
+.nf
+.ta 5m 10m 15m 20m 25m 30m 35m 40m 45m 50m 55m 60m
+.so /usr/include/sys/stat.h
+.fi
+.DT
+.PP
+The mode bits 0000070 and 0000007 encode group and
+others permissions (see
+.IR chmod (2)).
+The defined types,
+.I 
+ino_t, off_t, time_t,
+name various width integer values;
+.I dev_t
+encodes
+major and minor device numbers;
+their exact definitions are in
+the include file <sys/types.h>
+(see
+.IR types (5)).
+.PP
+When
+.I fildes
+is associated with a pipe,
+.I fstat
+reports an ordinary file with an i-node number,
+restricted permissions,
+and a not necessarily meaningful length.
+.PP
+.I st_atime
+is the file was last read.
+For reasons of efficiency, it is not set when a directory
+is searched, although this would be more logical.
+.I st_mtime
+is the time the file was last written or created.
+It is not set by changes of owner, group, link count, or mode.
+.I st_ctime
+is set both both by writing and changing the i-node.
+.SH "SEE ALSO"
+ls(1), filsys(5)
+.SH DIAGNOSTICS
+Zero is returned if a status is available;
+\-1 if the file cannot be found.
+.SH ASSEMBLER
+.nf
+(stat = 18.)
+.B sys stat; name; buf
+.PP
+(fstat = 28.)
+(file descriptor in r0)
+.B sys fstat; buf
+.fi
diff --git a/usr/man/man2/vfork.2v b/usr/man/man2/vfork.2v
new file mode 100644 (file)
index 0000000..7e25cf7
--- /dev/null
@@ -0,0 +1,85 @@
+.TH VFORK 2V
+.UC 4
+.SH NAME
+vfork \- spawn new process in a virtual memory efficient way
+.SH SYNOPSIS
+.B vfork()
+.SH DESCRIPTION
+.I Vfork
+can be used to create new processes without fully copying the address
+space of the old process, which is horrendously inefficient in a paged
+environment.  It is useful when the purpose of
+.IR fork (2)
+would have been to create a new system context for an
+.I exec.
+.I Vfork
+differs from
+.I fork
+in that the child borrows the parent's memory and thread of
+control until a call to
+.IR exec (2)
+or an exit (either by a call to
+.IR exit (2)
+or abnormally.)
+The parent process is suspended while the child is using its resources.
+.PP
+.I Vfork
+returns 0 in the child's context and (later) the pid of the child in
+the parent's context.
+.PP
+.I Vfork
+can normally be used just like
+.I fork.
+It does not work, however, to return while running in the childs context
+from the procedure which called
+.I vfork
+since the eventual return from
+.I vfork
+would then return to a no longer existent stack frame.
+Be careful, also, to call
+.I _exit
+rather than
+.I exit
+if you can't
+.I exec,
+since
+.I exit
+will flush and close standard I/O channels, and thereby mess up the
+parent processes standard I/O data structures.
+(Even with
+.I fork
+it is wrong to call
+.I exit
+since buffered data would then be flushed twice.)
+.PP
+Similarly when using the new signal mechanism of
+.IR sigset (3)
+mechanism be sure to call
+.I sigsys
+rather than
+.IR signal (2).
+.SH SEE ALSO
+fork(2), exec(2), sigsys(2), wait(2),
+.SH DIAGNOSTICS
+Same as for
+.IR fork .
+.SH BUGS
+This system call may be unnecessary if the system sharing mechanisms allow
+.I fork
+to be implemented more efficiently; users should not depend on the memory
+sharing semantics of
+.I vfork
+as it could, in that case, be made synonymous to
+.I fork.
+.PP
+To avoid a possible deadlock situation,
+processes which are children in the middle
+of a
+.I vfork
+are never sent SIGTTOU or SIGTTIN signals; rather,
+output or
+.IR ioctl s
+are allowed
+and input attempts result in an end-of-file indication.
+.PP
+This call is peculiar to this version of UNIX.