TCGETPGRP
NAME
tcgetpgrp, tcsetpgrp - get and set terminal foreground process group
SYNOPSIS
R #include <unistd.h>
I pid_t tcgetpgrp(int fd );
I int tcsetpgrp(int fd , pid_t pgrp );
DESCRIPTION
The function
R tcgetpgrp ()
returns the process group ID of the foreground process group on the
terminal associated to
R fd ,
which must be the controlling terminal of the calling process.
The function
R tcsetpgrp ()
makes the process group with process group ID pgrp
the foreground process group on the terminal associated to
R fd ,
which must be the controlling terminal of the calling process,
and still be associated with its session.
Moreover, pgrp must be a (nonempty) process group belonging to
the same session as the calling process.
If
R tcsetpgrp ()
is called by a member of a background process group in its session,
and the calling process is not blocking or ignoring
R SIGTTOU ,
a
SIGTTOU
signal is sent to all members of this background process group.
RETURN VALUE
When
fd
refers to the controlling terminal of the calling process,
the function
R tcgetpgrp ()
will return the foreground process group ID of that terminal
if there is one, and some value larger than 1 that is not
presently a process group ID otherwise.
When
fd
does not refer to the controlling terminal of the calling process,
-1 is returned, and
errno
is set appropriately.
When successful,
R tcsetpgrp ()
returns 0.
Otherwise, it returns -1, and
errno
is set appropriately.
ERRORS
EBADF
fd
is not a valid file descriptor.
EINVAL
pgrp
has an unsupported value.
ENOTTY
The calling process does not have a controlling terminal, or
it has one but it is not described by
R fd ,
or, for
R tcsetpgrp (),
this controlling terminal is no longer associated with the session
of the calling process.
EPERM
pgrp
has a supported value, but is not the process group ID of a
process in the same session as the calling process.
CONFORMING TO
POSIX.1-2001.
NOTES
These functions are implemented via the
TIOCGPGRP
and
TIOCSPGRP
ioctls.
History
The ioctls appeared in 4.2BSD.
The functions are POSIX inventions.
SEE ALSO