/* Don't do this for MAX_ATTEMPT, its simply too long */ for(i = 0; i < 1000; i++) {
pid = fork(); if (pid == -1) {
perror("fork"); exit(1);
} if (pid == 0) {
signal_self(ppid, SIGUSR1); exit(1);
} else {
alarm(0); /* Disable any pending */
alarm(2); while (!signaled && !fail) asmvolatile("": : :"memory"); if (!signaled) {
fprintf(stderr, "Didn't get signal from child\n");
FAIL_IF(1); /* For the line number */
} /* Otherwise we'll loop too fast and fork() will eventually fail */
waitpid(pid, NULL, 0);
}
}
for (i = 0; i < MAX_ATTEMPT; i++) { long rc;
alarm(0); /* Disable any pending */
signaled = 0;
alarm(TIMEOUT);
rc = signal_self(ppid, SIGUSR1); if (rc) {
fprintf(stderr, "(%d) Fail reason: %d rc=0x%lx",
i, fail, rc);
FAIL_IF(1); /* For the line number */
} while (!signaled && !fail) asmvolatile("": : :"memory"); if (!signaled) {
fprintf(stderr, "(%d) Fail reason: %d rc=0x%lx",
i, fail, rc);
FAIL_IF(1); /* For the line number */
}
}
return 0;
}
int main(void)
{
test_harness_set_timeout(300); return test_harness(test_signal, "signal");
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.