diff --git a/CHANGELOG.md b/CHANGELOG.md index c87b045eac..fa5ebb3831 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ This project adheres to [Semantic Versioning](http://semver.org/). ([#448](https://github.com/nix-rust/nix/pull/448)) - Added `getpgid` in `::nix::unistd` ([#433](https://github.com/nix-rust/nix/pull/433)) +- Added `tcgetpgrp` and `tcsetpgrp` in `::nix::unistd` + ([#451](https://github.com/nix-rust/nix/pull/451)) ### Changed - The minimum supported version of rustc is now 1.7.0. diff --git a/src/unistd.rs b/src/unistd.rs index 31b55f839d..e97bcdb9d3 100644 --- a/src/unistd.rs +++ b/src/unistd.rs @@ -129,6 +129,28 @@ pub fn setsid() -> Result { Errno::result(unsafe { libc::setsid() }) } + +/// Get the terminal foreground process group (see +/// [tcgetpgrp(3)](http://man7.org/linux/man-pages/man3/tcgetpgrp.3.html)). +/// +/// Get the group process id (GPID) of the foreground process group on the +/// terminal associated to file descriptor (FD). +#[inline] +pub fn tcgetgrp(fd: c_int) -> Result { + let res = unsafe { libc::tcgetpgrp(fd) }; + Errno::result(res) +} +/// Set the terminal foreground process group (see +/// [tcgetpgrp(3)](http://man7.org/linux/man-pages/man3/tcgetpgrp.3.html)). +/// +/// Get the group process id (PGID) to the foreground process group on the +/// terminal associated to file descriptor (FD). +#[inline] +pub fn tcsetpgrp(fd: c_int, pgrp: pid_t) -> Result<()> { + let res = unsafe { libc::tcsetpgrp(fd, pgrp) }; + Errno::result(res).map(drop) +} + /// Get the caller's thread ID (see /// [gettid(2)](http://man7.org/linux/man-pages/man2/gettid.2.html). ///