vfork()で作成されたプロセスは、作成プロセス(親プロセス)と同じレベルの権限を持ちますか?vfork()の子はどのような特権を持っていますか?
例:rootとしてプロセスを実行すると、vfork()の子プロセスは同じ実行権限を持ちますか?
vfork()で作成されたプロセスは、作成プロセス(親プロセス)と同じレベルの権限を持ちますか?vfork()の子はどのような特権を持っていますか?
例:rootとしてプロセスを実行すると、vfork()の子プロセスは同じ実行権限を持ちますか?
オープングループ(POSIX)fork()
の仕様は言う:
fork()
機能は、新しいプロセスを作成するものとします。そのテキストの下のUID/GIDのの言及がないとして
、あなたがいることを推測することができます。新しいプロセス(子 プロセス)は以下のように詳細を除き、呼び出しプロセス(親 プロセス)の正確なコピーでなければなりませんこれらのプロパティは継承されます。
これらのプロパティは、最終的に適切なプロパティ変更関数(setuid
など)またはexec
の呼び出しによって変更されます。
vfork()
の古い(POSIX 2004またはそれ以前)の仕様は似ています
vfork()
機能がvfork()
によって作成されたプロセスは、他の任意のデータを変更するいずれかの場合の動作は未定義であることを除いて、fork()
と同等のものでなければなりませんvfork()
からの戻り値を格納するために使用されるタイプpid_t
の変数よりも、が呼び出された関数から戻るか、_exit()
またはexec
ファシリティファミリのいずれかを正常に呼び出す前に他の関数を呼び出します。
vfork()
の仕様は、POSIX 2008(別名POSIX 2016)から削除されました。
これはvfork()にも適用されますか?私はvfork()呼び出しの中で(ファイルアクセスに関連する)問題に直面しています。 https://stackoverflow.com/questions/47135880/webmethods-integration-servers-hang-in-hp-when-it-uses-a-third-party-java-api – Aravind
アラビンドはいくつかのコードを共有しています。 vforkを介して作成されたプロセスが何かを変更すると、あなたの問題であるかもしれない未定義のbahviorが発生します。 –
@Aravind OpenGroup * vfork()関数は、vfork()によって作成されたプロセスが戻り値の格納に使用されるpid_t型の変数以外のデータを変更する場合、動作が未定義であることを除いて、fork vfork()、またはvfork()が呼び出された関数からの戻り値、または_exit()またはexecの関数ファミリのいずれかを正常に呼び出す前に他の関数を呼び出す* –