JM プロジェクトは、主に Linux 関連のマニュアルページの日本語ページを翻訳・公開しています。
... void * arg , ... /* pid_t * ptid , struct user_desc * tls , pid_t * ctid */ ); /* 素のシステムコールのプロトタイプ */ long clone(unsigned long flags , void * child_stack , void * ptid , void * ctid , struct pt_regs * regs ); glibc ラッパー関数の機能検 ... 査マクロの要件 ( feature_test_macros (7) 参照): clone (): glibc 2.14 以降: _GNU_SOURCE glibc 2.14 より前: _BSD_SOURCE || _SVID_SOURCE /* _GNU_SOURCE も定義される */ 説明 clone ... () は、 fork (2) と似た方法で新しいプロセスを作成する。 このページでは、 glibc の clone () ラッパー関数とその裏で呼ばれるシステムコールの両方について説明している。 メインの説明はラッパー関数に関するものである。 ... ... void * arg , ... /* pid_t * ptid , struct user_desc * tls , pid_t * ctid */ ); /* 素のシステムコールのプロトタイプ */ long clone(unsigned long flags , void * child_stack , void * ptid , void * ctid , struct pt_regs * regs ); glibc ラッパー関数の機能検 ... 査マクロの要件 ( feature_test_macros (7) 参照): clone (): glibc 2.14 以降: _GNU_SOURCE glibc 2.14 より前: _BSD_SOURCE || _SVID_SOURCE /* _GNU_SOURCE も定義される */ 説明 clone ... () は、 fork (2) と似た方法で新しいプロセスを作成する。 このページでは、 glibc の clone () ラッパー関数とその裏で呼ばれるシステムコールの両方について説明している。 メインの説明はラッパー関数に関するものである。 ... ... void * arg , ... /* pid_t * ptid , struct user_desc * tls , pid_t * ctid */ ); /* 素のシステムコールのプロトタイプ */ long clone(unsigned long flags , void * child_stack , void * ptid , void * ctid , struct pt_regs * regs ); glibc ラッパー関数の機能検 ... 査マクロの要件 ( feature_test_macros (7) 参照): clone (): glibc 2.14 以降: _GNU_SOURCE glibc 2.14 より前: _BSD_SOURCE || _SVID_SOURCE /* _GNU_SOURCE も定義される */ 説明 clone ... () は、 fork (2) と似た方法で新しいプロセスを作成する。 このページでは、 glibc の clone () ラッパー関数とその裏で呼ばれるシステムコールの両方について説明している。 メインの説明はラッパー関数に関するものである。 ... ... void * arg , ... /* pid_t * ptid , struct user_desc * tls , pid_t * ctid */ ); /* 素のシステムコールのプロトタイプ */ long clone(unsigned long flags , void * child_stack , void * ptid , void * ctid , struct pt_regs * regs ); glibc ラッパー関数の機能検 ... 査マクロの要件 ( feature_test_macros (7) 参照): clone (): glibc 2.14 以降: _GNU_SOURCE glibc 2.14 より前: _BSD_SOURCE || _SVID_SOURCE /* _GNU_SOURCE も定義される */ 説明 clone ... () は、 fork (2) と似た方法で新しいプロセスを作成する。 このページでは、 glibc の clone () ラッパー関数とその裏で呼ばれるシステムコールの両方について説明している。 メインの説明はラッパー関数に関するものである。 ... ... どは、新しいプロセスを fork (2) または vfork (2) を使って生成したときに、暗黙のうちに共有される。 一方、仮想メモリーなどは、 clone (2) を使ってプロセスやスレッドを生成するときに、明示的に共有することを要求できる。 unshare () の主な利用法は、プロセスが新 ... ビットマスクであり、 実行コンテキストのどの部分の共有を解除するかを表す。 この引数は、以下の定数の 0 個以上の OR で指定する: CLONE_FILES clone (2) CLONE_FILES フラグの効果を取り消す。 ファイルディスクリプターテーブルを共有させず、 呼び出し元プロセスは他 ... のプロセスとファイルディスクリプターを共有しなくなる。 CLONE_FS clone (2) CLONE_FS フラグの効果を取り消す。ファイルシステム属性を共有させず、呼び出し元プロセスは、ルートディレクトリ ( ... ... することが可能になる。 新しい PID 名前空間の PID は、 独立したシステムであるかのように、 1 から始まる。 fork (2), vfork (2), clone (2) を呼び出すと、 その名前空間内で一意な PID でプロセスが生成される。 PID 名前空間を使用するには、設定 CONFIG_PID_NS が有 ... 効になったカーネルが必要である。 名前空間の init プロセス 新しい名前空間で作成される最初のプロセス (すなわち、 CLONE_NEWPID フラグで clone (2) を使って作成されたプロセスや、 CLONE_NEWPID フラグで unshare (2) を呼び出した後のプロセスによって ... PID 名前空間は入れ子にすることができる。 最初の ("root") PID 名前空間以外の各 PID 名前空間は親を持つ。 PID 名前空間の親は clone (2) や unshare (2) を使ってその名前空間を作成したプロセスの PID 名前空間である。 したがって、 PID 名前空間は木構造を構成し ... ... 間以外の各名前空間は親のユーザー名前空間を持ち、 0 個以上のユーザー名前空間を持つということである。 親のユーザー名前空間は、 CLONE_NEWUSER フラグを指定して unshare (2) や clone (2) を呼び出してユーザー名前空間を作成したプロセスのユーザー名前空間である。 ... カーネルにより (バージョン 3.11 以降では) ユーザー名前空間のネスト数に 32 という上限が課される。 unshare (2) や clone (2) の呼び出しでこの上限を超えてしまう場合はエラー EUSERS で失敗する。 各プロセスは必ず 1 個のユーザー名前空間のメンバーと ... なる。 CLONE_NEWUSER フラグを指定せずに fork (2) や clone (2) でプロセスを作成した場合、 そのプロセスは親プロセスと同じユーザー名前空間 ... ... すことができるかを指定する。 この引き数には以下のいずれかの値を指定できる。 0 どのタイプの名前空間も関連付けることができる。 CLONE_NEWIPC (Linux 3.0 以降) fd は IPC 名前空間を参照していなければならない。 CLONE_NEWNET (Linux 3.0 以降) fd はネットワーク名 ... 前空間を参照していなければならない。 CLONE_NEWNS (Linux 3.8 以降) fd はマウント名前空間を参照していなければならない。 CLONE_NEWPID (Linux 3.8 以降) fd は子孫の PID 名 ... 前空間を参照していなければならない。 CLONE_NEWUSER (Linux 3.8 以降) fd はユーザー名前空間を参照していなければならない。 CLONE_NEWUTS (Linux 3.0 以降) fd は UTS 名前空 ... ... ない。 名前空間の一つの利用方法はコンテナーの実装である。 Linux では以下の名前空間が提供される。 名前空間 定数 分離対象 IPC CLONE_NEWIPC System V IPC, POSIX メッセージキュー Network CLONE_NEWNET ネットワークデバイス、スタック、ポートなど Mount CLONE_NE ... WNS マウントポイント PID CLONE_NEWPID プロセス ID User CLONE_NEWUSER ユーザー ID とグループ ID UTS CLONE_NEWUTS ホスト名と NIS ドメイン名 このページでは、 ... I の概要を紹介する。 名前空間 API 後で説明する種々の /proc ファイル以外に、名前空間 API として以下のシステムコールがある。 clone (2) clone (2) システムコールは新しいプロセスを作成する。 呼び出し時に flags 引き数で以下のリストにある CLONE_NEW* のフラグ ... ... tid と clear_child_tid という 2 つの属性を保持する。この 2 つの属性はデフォルトでは NULL である。 set_child_tid スレッドが CLONE_CHILD_SETTID フラグを指定した clone (2) によって開始された場合、 set_child_tid は clone (2) のシステムコールの ctid 引数で ... 合、一番最初に新しいスレッドが行うことは、 このアドレスに自身のスレッド ID を書き込むことである。 clear_child_tid スレッドが CLONE_CHILD_CLEARTID フラグを指定した clone (2) によって開始された場合、 clear_child_tid は clone (2) のシステムコールの ctid 引 ... 有である。 注意 glibc はこのシステムコールに対するラッパー関数を提供していない。 syscall (2) を使って呼び出すこと。 関連項目 clone (2), futex (2), gettid (2) この文書について この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プ ... 日本語の文書やマニュアルを配布している個人/プロジェクトへのリンクです。