示例#1
0
int
main(int argc, char *argv[]) {
	pid_t childPid;
	int i, j, dummy;
	struct tms tms;

	setbuf(stdout, NULL);

	switch (childPid = fork()) {
	case -1:
		errExit("fork");
		break;
	case 0:			/* child */
		for (i = 0; i < LOOP; i++) {
				/* consume some system CPU time */
			times(&tms);
				/* consume some user CPU time */
			for (j = 0; j < LOOP*100; j++)
				dummy = dummy * j + i;
		}
		_exit(EXIT_SUCCESS);
	default:		/* parent */
		sleep(2);
		printf("before wait\n");
		printRusage(RUSAGE_CHILDREN);
		wait(NULL);
		printf("after wait\n");
		printRusage(RUSAGE_CHILDREN);
	}

	exit(EXIT_SUCCESS);
}
int
main(int argc, char *argv[])
{
    pid_t childPid;
    struct rusage ru;

    if (argc < 2 || strcmp(argv[1], "--help") == 0)
        usageErr("%s command arg...\n", argv[0]);

    switch (childPid = fork()) {
    case -1:
        errExit("fork");

    case 0:
        execvp(argv[1], &argv[1]);
        errExit("execvp");

    default:
        printf("Command PID: %ld\n", (long) childPid);
        if (wait(NULL) == -1)
            errExit("wait");
        if (getrusage(RUSAGE_CHILDREN, &ru) == -1)
            errExit("getrusage");

        printf("\n");
        printRusage("\t", &ru);
        exit(EXIT_SUCCESS);
    }
}
示例#3
0
int
main(int argc, char *argv[]) {
	pid_t childPid;

	switch (childPid = fork()) {
	case -1:
		errExit("fork");
		break;
	case 0:			/* child */
		execvp(argv[1], &argv[1]);
		errExit("execvp");
	default:		/* parent */
		wait(NULL);
		printRusage(argv[1]);
	}

	exit(EXIT_SUCCESS);
}