| PMCREATEATTACHFD(3) | PMCREATEATTACHFD(3) |
int pmCreateAttachFd(pmContext *pmc, int *fdp);
pmContext * |
pmc |
pmContext オブジェクト |
|
int * |
fdp |
pmAttachContext() で使われるファイル デスクリプタ |
pmCreateAttachFd() は pmAttachContext() に渡される新しいファイル デスクリプタを生成します。
pmContext にアクセスしてはいけません。
この関数は以下の例のように使わなければなりません。
PM_SUCCESS |
成功 |
EMFILE |
アクティブなデスクリプタが多すぎます。 |
waitpid(2) を用いて同時アクセスを回避:
if ((pid = fork()) == 0) {
error = pmCreateAttachFd(pmc, &fd);
kill(getpid(), SIGSTOP); /* tell OK to access pmc */
invoke application by exec(2).
_exit(1);
}
waitpid(pid, &stat, WUNTRACED); /* wait until it's OK */
kill(pid, SIGCONT);
親プロセスからこの関数を呼び出し、 pmContext に逐次的にアクセス。
pmCreateAttachFd(pmc, &fd);
if ((pid = fork()) == 0) {
invoke application by exec(2).
_exit(1);
}