fork()
システムコールの実行時間を調べようとしています。各子プロセスはすぐに終了する必要があり、次の子プロセスを作成する前に、各子プロセスで親プロセスにwait()
が必要です。また、プログラムの実行時間を測定するために、シェル組み込みコマンドtime
を使用したいと思います。Cでfork()システムコールの実行時間を計算する方法は?
私はこのコードをこれまで持っていますが、わかりません。
#include <sys/types.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int global = 100;
int main(int argc, char** argv)
{
int local = 5;
pid_t pid;
pid = fork();
if (pid < 0) {
fprintf(stderr, "error -- failed to fork()");
return 1;
}
if (pid > 0) {
int child_ret;
waitpid(pid, &child_ret, 0);
printf("parent -- global: %i, local: %i\n", global, local);
printf("parent -- child exited with code %i\n", child_ret);
} else {
global++;
local++;
printf("child -- global: %i, local: %i\n", global, local);
exit (0);
}
}
' getrusage'システムコールです。 – Kaz
コードは機能しますか?はいの場合は、codereview.stackexchange.comに投稿する必要があります。コードがうまくいかない場合は、その理由を正確に述べてください:どのようなエラーや予期しない動作が観察されていますか? –
'local'と' global'はあなたの親プロセスのために変更されないので、混乱するでしょうが、あなたのコードは正しいように見えます。 – tkausl