stopio -- stop further I/O to an open file


cc . . . -lprot

#include  <sys/types.h>
#include  <sys/security.h>
#include  <sys/audit.h>
#include  <prot.h>

int stopio (path) char *path;


The stopio routine prevents further I/O on all file descriptors now having the argument path open. The next time a read(S), write(S) or ioctl(S) is invoked by any process on any file descriptor of path, the system call fails with the [EBADF] error and the SIGHUP signal is sent to the process. stopio may only be invoked by the super user or owner of file path.

The stopio routine is used to isolate successive user sessions on a single terminal. At the time stopio is invoked with the terminal path as the argument, background processes left by previous sessions may continue to run on the terminal, but any further input or output to the terminal fails as previously described. As the terminal gets re-opened after the stopio invocation, I/O using those new file descriptors succeeds until the next stopio call on the same path. This system call is intended to be used immediately before the open of the terminal line.

Return value

Upon successful completion, the stopio routine returns a value of 0. Otherwise, a value of -1 is returned and errno is set to indicate the appropriate error.


If one of the following conditions occurs, the stopio routine fails and errno is set to the corresponding value:

Search permission is denied on a component of the path prefix.

Path points outside the allocated address space of the process.

The named file does not exist.

A component of the path prefix is not a directory.

path is not a local character special file. (This may go away - see following Note).

The effective user ID does not match the owner of the file and the effective user ID is not super-user.

The named file resides on a read-only file system. (This may go away - see following Note).


The [EROFS] error is not really appropriate for this routine.

stopio should work for all file types, but a security study has not yet been made as to the utility or feasibility in such an assignment. For now, it works only for character special files to specifically address the problem of sharing a single terminal through multiple login sessions.

stopio's functionality should really be a command within fcntl(S), but fcntl expects the file to be open already and this call only requires a path name.

See also

creat(S), ioctl(S), open(S), read(S), write(S)

Standards conformance

The stopio routine is an extension of AT&T System V provided by the Santa Cruz Operation.
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003