# tcgetpgrp

## NAME



           tcgetpgrp, tcsetpgrp - get and set terminal foreground process
           group
    


## LIBRARY



           Standard C library (_libc_ , _-lc_)
    


## SYNOPSIS



           **#include <unistd.h>**
    
           **pid_t tcgetpgrp(int** _fd_**);**
           **int tcsetpgrp(int** _fd_**, pid_t** _pgrp_**);**
    


## DESCRIPTION



           The function **tcgetpgrp**() returns the process group ID of the
           foreground process group on the terminal associated to _fd_ , which
           must be the controlling terminal of the calling process.
    
           The function **tcsetpgrp**() makes the process group with process
           group ID _pgrp_ the foreground process group on the terminal
           associated to _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 **tcsetpgrp**() is called by a member of a background process group
           in its session, and the calling process is not blocking or
           ignoring **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 **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 to indicate the error.
    
           When successful, **tcsetpgrp**() returns 0.  Otherwise, it returns -1,
           and _errno_ is set to indicate the error.
    


## 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 _fd_ , or, for
                  **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.
    


## ATTRIBUTES



           For an explanation of the terms used in this section, see
           attributes(7).
           ┌──────────────────────────────────────┬───────────────┬─────────┐
           │ **Interface** │ **Attribute** │ **Value** │
           ├──────────────────────────────────────┼───────────────┼─────────┤
           │ **tcgetpgrp**(), **tcsetpgrp**()             │ Thread safety │ MT-Safe │
           └──────────────────────────────────────┴───────────────┴─────────┘
    


## VERSIONS



           These functions are implemented via the **TIOCGPGRP** and **TIOCSPGRP**
           ioctls.
    


## STANDARDS



           POSIX.1-2008.
    


* * *