Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

setpgid(2V)

setsid(2V)

TCGETPGRP(3V)  —  C LIBRARY FUNCTIONS

NAME

tcgetpgrp, tcsetpgrp − get, set foreground process group ID

SYNOPSIS

#include <sys/types.h>

pid_t tcgetpgrp(fd)
int fd;

int tcsetpgrp(fd, pgrp_id)
int fd;
pid_t pgrp_id;

DESCRIPTION

tcgetpgrp() returns the value of the process group ID of the foreground process group associated with the terminal (see NOTES).  tcgetpgrp() is allowed from a process that is a member of a background process group; however, the information may be subsequently changed by a process that is a member of a foreground process group. 

If the process has a controlling terminal, tcsetpgrp() sets the foreground process group ID associated with the terminal to pgrp_id. The file associated with fd must be the controlling terminal and must be currently associated with the session of the calling process.  The value of pgrp_id must match a process group ID of a process in the same session as the calling process. 

RETURN VALUES

On success, tcgetpgrp() returns the process group ID of the foreground process group associated with the terminal.  On failure, it returns −1 and sets errno to indicate the error. 

tcsetpgrp() returns:

0 on success. 

−1 on failure and sets errno to indicate the error. 

ERRORS

If any of the following conditions occur, tcgetpgrp() sets errno to:

EBADF fd is not a valid file descriptor. 

ENOSYS tcgetpgrp() is not supported in this implementation. 

ENOTTY The calling process does not have a controlling terminal. 

The file is not the controlling terminal. 

If any of the following conditions occur, tcsetpgrp() sets errno to:

EBADF fd is not a valid file descriptor. 

EINVAL The value of pgrp_id is not a valid process group ID. 

ENOTTY The calling process does not have a controlling terminal. 

The file is not the controlling terminal. 

The controlling terminal is no longer associated with the session of the calling process. 

EPERM The value of pgrp_id is a valid process group ID, but does not match the process group ID of a process in the same session as the calling process. 

SEE ALSO

setpgid(2V), setsid(2V)

NOTES

For tcgetpgrp() and tcsetpgrp() to behave as described above, {_POSIX_JOB_CONTROL} must be in effect (see sysconf(2V)).  {_POSIX_JOB_CONTROL} is always in effect on OS/MP systems, but for portability, applications should call sysconf() to determine whether {_POSIX_JOB_CONTROL} is in effect for the current system. 

If {_POSIX_JOB_CONTROL} is not defined on a system conforming to IEEE Std 1003.1-1988 either tcgetpgrp() and tcsetpgrp() behave as described above, or tcgetpgrp() and tcsetpgrp() fail. 

Solbourne Computer, Inc.  —  4 Feb 1991

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026