summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md2
-rw-r--r--src/unistd.rs22
2 files changed, 24 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c87b045e..fa5ebb38 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 31b55f83..e97bcdb9 100644
--- a/src/unistd.rs
+++ b/src/unistd.rs
@@ -129,6 +129,28 @@ pub fn setsid() -> Result<pid_t> {
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<pid_t> {
+ 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).
///