⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 time.c

📁 这是一个SIGMA方案的PMP播放器的UCLINUX程序,可播放DVD,VCD,CD MP3...有很好的参考价值.
💻 C
📖 第 1 页 / 共 2 页
字号:
		    case '%':		/* Literal '%'.  */			putc ('%', fp);			break;		    case 'C':		/* The command that got timed.  */			fprintargv (fp, command, " ");			break;		    case 'D':		/* Average unshared data size.  */			fprintf (fp, "%lu",				MSEC_TO_TICKS (v) == 0 ? 0 :				ptok ((UL) resp->ru.ru_idrss) / MSEC_TO_TICKS (v) +				ptok ((UL) resp->ru.ru_isrss) / MSEC_TO_TICKS (v));			break;		    case 'E':		/* Elapsed real (wall clock) time.  */			if (resp->elapsed.tv_sec >= 3600)	/* One hour -> h:m:s.  */			    fprintf (fp, "%ldh %ldm %02lds",				    resp->elapsed.tv_sec / 3600,				    (resp->elapsed.tv_sec % 3600) / 60,				    resp->elapsed.tv_sec % 60);			else			    fprintf (fp, "%ldm %ld.%02lds",	/* -> m:s.  */				    resp->elapsed.tv_sec / 60,				    resp->elapsed.tv_sec % 60,				    resp->elapsed.tv_usec / 10000);			break;		    case 'F':		/* Major page faults.  */			fprintf (fp, "%ld", resp->ru.ru_majflt);			break;		    case 'I':		/* Inputs.  */			fprintf (fp, "%ld", resp->ru.ru_inblock);			break;		    case 'K':		/* Average mem usage == data+stack+text.  */			fprintf (fp, "%lu",				MSEC_TO_TICKS (v) == 0 ? 0 :				ptok ((UL) resp->ru.ru_idrss) / MSEC_TO_TICKS (v) +				ptok ((UL) resp->ru.ru_isrss) / MSEC_TO_TICKS (v) +				ptok ((UL) resp->ru.ru_ixrss) / MSEC_TO_TICKS (v));			break;		    case 'M':		/* Maximum resident set size.  */			fprintf (fp, "%lu", ptok ((UL) resp->ru.ru_maxrss));			break;		    case 'O':		/* Outputs.  */			fprintf (fp, "%ld", resp->ru.ru_oublock);			break;		    case 'P':		/* Percent of CPU this job got.  */			/* % cpu is (total cpu time)/(elapsed time).  */			if (r > 0)			    fprintf (fp, "%lu%%", (v * 100 / r));			else			    fprintf (fp, "?%%");			break;		    case 'R':		/* Minor page faults (reclaims).  */			fprintf (fp, "%ld", resp->ru.ru_minflt);			break;		    case 'S':		/* System time.  */			fprintf (fp, "%ld.%02ld",				resp->ru.ru_stime.tv_sec,				resp->ru.ru_stime.TV_MSEC / 10);			break;		    case 'T':		/* System time.  */			if (resp->ru.ru_stime.tv_sec >= 3600)	/* One hour -> h:m:s.  */			    fprintf (fp, "%ldh %ldm %02lds",				    resp->ru.ru_stime.tv_sec / 3600,				    (resp->ru.ru_stime.tv_sec % 3600) / 60,				    resp->ru.ru_stime.tv_sec % 60);			else			    fprintf (fp, "%ldm %ld.%02lds",	/* -> m:s.  */				    resp->ru.ru_stime.tv_sec / 60,				    resp->ru.ru_stime.tv_sec % 60,				    resp->ru.ru_stime.tv_sec / 10000);			break;		    case 'U':		/* User time.  */			fprintf (fp, "%ld.%02ld",				resp->ru.ru_utime.tv_sec,				resp->ru.ru_utime.TV_MSEC / 10);			break;		    case 'u':		/* User time.  */			if (resp->ru.ru_utime.tv_sec >= 3600)	/* One hour -> h:m:s.  */			    fprintf (fp, "%ldh %ldm %02lds",				    resp->ru.ru_utime.tv_sec / 3600,				    (resp->ru.ru_utime.tv_sec % 3600) / 60,				    resp->ru.ru_utime.tv_sec % 60);			else			    fprintf (fp, "%ldm %ld.%02lds",	/* -> m:s.  */				    resp->ru.ru_utime.tv_sec / 60,				    resp->ru.ru_utime.tv_sec % 60,				    resp->ru.ru_utime.tv_sec / 10000);			break;		    case 'W':		/* Times swapped out.  */			fprintf (fp, "%ld", resp->ru.ru_nswap);			break;		    case 'X':		/* Average shared text size.  */			fprintf (fp, "%lu",				MSEC_TO_TICKS (v) == 0 ? 0 :				ptok ((UL) resp->ru.ru_ixrss) / MSEC_TO_TICKS (v));			break;		    case 'Z':		/* Page size.  */			fprintf (fp, "%d", getpagesize ());			break;		    case 'c':		/* Involuntary context switches.  */			fprintf (fp, "%ld", resp->ru.ru_nivcsw);			break;		    case 'e':		/* Elapsed real time in seconds.  */			fprintf (fp, "%ld.%02ld",				resp->elapsed.tv_sec,				resp->elapsed.tv_usec / 10000);			break;		    case 'k':		/* Signals delivered.  */			fprintf (fp, "%ld", resp->ru.ru_nsignals);			break;		    case 'p':		/* Average stack segment.  */			fprintf (fp, "%lu",				MSEC_TO_TICKS (v) == 0 ? 0 :				ptok ((UL) resp->ru.ru_isrss) / MSEC_TO_TICKS (v));			break;		    case 'r':		/* Incoming socket messages received.  */			fprintf (fp, "%ld", resp->ru.ru_msgrcv);			break;		    case 's':		/* Outgoing socket messages sent.  */			fprintf (fp, "%ld", resp->ru.ru_msgsnd);			break;		    case 't':		/* Average resident set size.  */			fprintf (fp, "%lu",				MSEC_TO_TICKS (v) == 0 ? 0 :				ptok ((UL) resp->ru.ru_idrss) / MSEC_TO_TICKS (v));			break;		    case 'w':		/* Voluntary context switches.  */			fprintf (fp, "%ld", resp->ru.ru_nvcsw);			break;		    case 'x':		/* Exit status.  */			fprintf (fp, "%d", WEXITSTATUS (resp->waitstatus));			break;		    case '\0':			putc ('?', fp);			return;		    default:			putc ('?', fp);			putc (*fmt, fp);		}		++fmt;		break;	    case '\\':		/* Format escape.  */		switch (*++fmt)		{		    case 't':			putc ('\t', fp);			break;		    case 'n':			putc ('\n', fp);			break;		    case '\\':			putc ('\\', fp);			break;		    default:			putc ('?', fp);			putc ('\\', fp);			putc (*fmt, fp);		}		++fmt;		break;	    default:		putc (*fmt++, fp);	}	if (ferror (fp))	    error_msg_and_die("write error");    }    putc ('\n', fp);    if (ferror (fp))	error_msg_and_die("write error");}/* Run command CMD and return statistics on it.   Put the statistics in *RESP.  */static void run_command (char *const *cmd, resource_t *resp){    pid_t pid;			/* Pid of child.  */    __sighandler_t interrupt_signal, quit_signal;    gettimeofday (&resp->start, (struct timezone *) 0);    pid = fork ();		/* Run CMD as child process.  */    if (pid < 0)	error_msg_and_die("cannot fork");    else if (pid == 0)    {				/* If child.  */	/* Don't cast execvp arguments; that causes errors on some systems,	   versus merely warnings if the cast is left off.  */	execvp (cmd[0], cmd);	error_msg("cannot run %s", cmd[0]);	_exit (errno == ENOENT ? 127 : 126);    }    /* Have signals kill the child but not self (if possible).  */    interrupt_signal = signal (SIGINT, SIG_IGN);    quit_signal = signal (SIGQUIT, SIG_IGN);    if (resuse_end (pid, resp) == 0)	error_msg("error waiting for child process");    /* Re-enable signals.  */    signal (SIGINT, interrupt_signal);    signal (SIGQUIT, quit_signal);}extern int time_main (int argc, char **argv){    int gotone;    resource_t res;    const char *output_format = default_format;    argc--;    argv++;    /* Parse any options  -- don't use getopt() here so we don't     * consume the args of our client application... */    while (argc > 0 && **argv == '-') {	gotone = 0;	while (gotone==0 && *++(*argv)) {	    switch (**argv) {		case 'v':		    output_format = long_format;		    break;		case 'p':		    output_format = posix_format;		    break;		default:		    show_usage();	    }	    argc--;	    argv++;	    gotone = 1;	}    }    if (argv == NULL || *argv == NULL)	show_usage();    run_command (argv, &res);    summarize (stdout, output_format, argv, &res);    fflush (stdout);    if (WIFSTOPPED (res.waitstatus))	exit (WSTOPSIG (res.waitstatus));    else if (WIFSIGNALED (res.waitstatus))	exit (WTERMSIG (res.waitstatus));    else if (WIFEXITED (res.waitstatus))	exit (WEXITSTATUS (res.waitstatus));    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -