EN JA
POSIX_SPAWN_FILE_ACTIONS_ADDOPEN(3)
POSIX_SPAWN_FILE_ACTIONS_ADDOPEN(3) FreeBSD Library Functions Manual POSIX_SPAWN_FILE_ACTIONS_ADDOPEN(3)

名称

posix_spawn_file_actions_addopen, posix_spawn_file_actions_adddup2, posix_spawn_file_actions_addcloseスポンファイルアクションオブジェクトのための open、dup2 または close アクションを追加する

ライブラリ

Standard C Library (libc, -lc)

書式

#include < spawn.h>

int
posix_spawn_file_actions_addopen( posix_spawn_file_actions_t * file_actions, int fildes, const char *restrict path, int oflag, mode_t mode);

int
posix_spawn_file_actions_adddup2( posix_spawn_file_actions_t * file_actions, int fildes, int newfildes);

int
posix_spawn_file_actions_addclose( posix_spawn_file_actions_t * file_actions, int fildes);

解説

これらの関数は、スポンファイルアクション (動作) オブジェクトのための open、dup2 または close アクションを追加します。

スポンファイルアクションオブジェクトは、 ( < spawn.h> で定義される) タイプ posix_spawn_file_actions_t であり、与えられた親のオープンされたファイル記述子のセットを子プロセスのためにオープンされたファイル記述子のセットに到着する順序で、 posix_spawn() または posix_spawnp() 操作によって実行される一連のアクション (動作) を指定するために使用されます。

スポンファイルアクションオブジェクトは、 posix_spawn() または posix_spawnp() に渡されるとき、呼び出しプロセスのオープンされたファイル記述子のセットが、どのようにスポンされたプロセスのための潜在的にオープンされているファイル記述子のセットに変換されたかを指定します。この変換は、アクションがオブジェクトに追加された順序で、 (新しいプロセスイメージの実行の前に) スポンされたプロセスのコンテキストで、あたかも、アクションの指定されたシーケンスが、正確に一度実行されたかのようです。さらに、新しいプロセスイメージが実行されるとき、 FD_CLOEXEC フラグ設定がある (この新しいセットから) 任意のファイル記述子は、クローズされます ( posix_spawn() 参照)。

posix_spawn_file_actions_addopen() 関数は、新しいプロセスが、このファイルアクションオブジェクトを使用してスポンされるとき、(あたかも

open(path, oflag, mode)

が呼び出されて、そして fildes でないなら、 fildes に変更されて、ファイル記述子が返されるように) path によって指定されたファイルが、オープンされる、 file_actions によって参照されたオブジェクトへのオープンされたアクションを追加します。 fildes が既にオープンされているファイル記述子であったなら、新しいファイルがオープンされる前にクローズされます。

path によって記述された文字列は、 posix_spawn_file_actions_addopen() 関数によってコピーされます。

posix_spawn_file_actions_adddup2() 関数は、 newfildes のための FD_CLOEXEC フラグが、たとえ fildesnewfildes と等しくても、クリアされることを除いて、新しいプロセスが、このファイルアクションオブジェクトを使用してスポンされるとき、(あたかも

dup2(fildes, newfildes)

が呼び出されたかのように) ファイル記述子 fildesnewfildes として複製される file_actions によって参照されるオブジェクトに dup2 アクションを追加します。 dup2() との違いは、特別のファイル記述子を特別の子プロセスへ渡すために役に立ちます。

posix_spawn_file_actions_addclose() 関数は、新しいプロセスが、このファイルアクションオブジェクトを使用してスポンされるとき、(あたかも

close(fildes)

が呼び出されたかのように) としてファイル記述子 fildes をクローズする file_actions によって参照されるオブジェクトに close アクションを追加します。

戻り値

成功して終了すれば、これらの関数は、0 を返します。そうでなければ、エラー番号が、エラーを示すために返されます。

エラー

これらの関数は、次の場合に失敗します:
[ EBADF]
fildes または newfildes によって指定された値が、負です。
[ ENOMEM]
スポンファイルアクションオブジェクトに追加するための十分なメモリがありません。

規格

posix_spawn_file_actions_addopen(), posix_spawn_file_actions_adddup2() と posix_spawn_file_actions_addclose() 関数は、 fildesnewfildes ( FD_CLOEXEC をクリアする) と等しい場合の posix_spawn_file_actions_adddup2() の振る舞いを除いて、 IEEE Std 1003.1-2001 (“POSIX.1”) に適合しています。規格の将来の更新版は、この振る舞いを要求すると予想されます。

歴史

posix_spawn_file_actions_addopen(), posix_spawn_file_actions_adddup2() と posix_spawn_file_actions_addclose() 関数は、 FreeBSD 8.0 ではじめて登場しました。

作者

Ed Schouten <ed@FreeBSD.org>
May 9, 2013 FreeBSD