Ich versuche, die Laufzeit des Systemaufrufs fork()
zu finden. Jeder untergeordnete Prozess muss sofort beendet werden, und das übergeordnete Element muss wait()
für jedes untergeordnete Element aufweisen, bevor das nächste erstellt werden kann. Ich möchte auch den Shell-eingebauten Befehl mit dem Namen time
verwenden, um die Ausführungszeit eines Programms zu messen.Wie berechnet man die Laufzeit für den Systemaufruf fork() in C?
Ich habe diesen Code bisher, aber nicht sicher, ob ich es richtig mache.
#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);
}
}
Werfen Sie einen Blick auf die ' Systemaufruf von getrusage. – Kaz
Funktioniert der Code? Wenn ja, sollten Sie auf codereview.stackexchange.com posten. Wenn der Code nicht funktioniert, sagen Sie bitte genau, warum Sie das denken: Welchen Fehler oder unerwartetes Verhalten beobachten Sie? –
Sie sind wahrscheinlich verwirrt, weil sich 'local' und' global' für Ihren Parent-Prozess nicht ändern, aber ja, Ihr Code sieht korrekt aus. – tkausl