tcgetpgrp - ライブラリコールの説明 - Linux コマンド集 一覧表
名前
tcgetpgrp, tcsetpgrp - 端末のフォアグラウンド・プロセス・グループの 取得/設定を行う
書式
#include <unistd.h>
pid_t tcgetpgrp(int
fd
);
int tcsetpgrp(int
fd
, pid_t
pgrp
);
説明
関数 tcgetpgrp ()は、 fd に対応する端末のフォアグラウンド・プロセス・グループの プロセス・グループ ID を返す。 fd で指定された端末は、呼び出しを行うプロセスの制御端末でなければならない。
関数 tcsetpgrp ()は、プロセス・グループID が pgrp のプロセス・グループを fd に対応する端末のフォアグラウンド・プロセス・グループにする。 このとき、 fd は tcsetpgrp ()を呼び出すプロセスの制御端末でなければならない。 さらに、 pgrp は、呼び出しを行うプロセスと同じセッションに 属する (メンバが空でない) プロセス・グループでなければならない。
tcsetpgrp ()がセッションに属するバックグラウンド・グループ・プロセスのメンバから 呼び出され、かつ呼び出しを行うプロセスが SIGTTOU をブロックしたり 無視したりするようになっていない場合、 SIGTTOU シグナルは バックグラウンド・プロセス・グループの全てのメンバに送られる。
返り値
fd が呼び出しを行ったプロセスの制御端末を参照している場合、関数 tcgetpgrp ()は、その制御端末のフォアグラウンド・プロセス・グループがあれば そのプロセス・グループの ID を返す。 そのようなプロセス・グループがなければ、現在プロセス・グループ ID として使用されていない、1より大きな何らかの値が返される。 fd が呼び出しを行ったプロセスの制御端末を参照していない場合、 -1 が返され、 errno が適切に設定される。
成功した場合、 tcsetpgrp ()は 0 を返す。そうでない場合、 -1 を返し、 errno を適切に設定する。
エラー
- EBADF
- fd は有効なファイル記述子でない。
- EINVAL
- pgrp が無効な値である。
- ENOTTY
- 呼び出しを行ったプロセスが制御端末を持っていない、もしくは 制御端末を持っているが fd で参照されるものとは異なる、 tcsetpgrp ()の場合は、 fd で指定された制御端末がすでに呼び出しを行ったプロセスのセッション と関係のないものになっている際にも、このエラーとなる。
- EPERM
- pgrp が有効な値だが、呼び出しを行ったプロセスと同じセッションに属する プロセスのプロセス・グループ ID には該当するものがない。
注意
この関数は TIOCGPGRP と TIOCGSID の ioctl 経由で実現されている。
歴史
これらの ioctl は 4.2BSD で登場した。 これらの関数は POSIX で考案されたものである。
準拠
POSIX.1-2001.