2016-10-23 8 views
3

私のシステム(Opensuse)では、デフォルトで子プロセスはforkの後に常に最初に実行されます。また、子プロセスを最初に実行させる方法もあります。親プロセスを最初に実行する方法があるかどうかを知りたいですか?親プロセスを最初に実行するよう強制する

+0

を使用することができます。 あなたが行うことができる唯一の方法は、親プロセスの後にCPUを得るように子プロセスでsleep(time)を書くことです。 – Anjaneyulu

+1

そうでも、それでも子プロセスはsleep/sigsuspendを実行する必要があります。 – ram619

+0

子が 'ptrace'を介して' SIGSTOP'ed状態で作成されるよう手配することができます。 – EOF

答えて

2

あなたはそれはOSとコンテキストの切り替え時間の種類によって異なり、この方法

pid_t pid = fork(); 
if (pid == -1) 
    abort(); 
else if (pid == 0) 
{ 
    raise(SIGSTOP); // stop the child 
} 
else 
{ 
    waitpid(pid, NULL, WUNTRACED); // wait until the child is stopped 
    kill(pid, SIGCONT); // resume the child 
} 
関連する問題