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

📄 time.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>char	output[4096];void	add(char*, ...);void	error(char*);void	notifyf(void*, char*);voidmain(int argc, char *argv[]){	int i;	Waitmsg *w;	long l;	char *p;	char err[ERRMAX];	if(argc <= 1){		fprint(2, "usage: time command\n");		exits("usage");	}	switch(fork()){	case -1:		error("fork");	case 0:		exec(argv[1], &argv[1]);		if(argv[1][0] != '/' && strncmp(argv[1], "./", 2) &&		   strncmp(argv[1], "../", 3)){			sprint(output, "/bin/%s", argv[1]);			exec(output, &argv[1]);		}		error(argv[1]);	}	notify(notifyf);    loop:	w = wait();	if(w == nil){		errstr(err, sizeof err);		if(strcmp(err, "interrupted") == 0)			goto loop;		error("wait");	}	l = w->time[0];	add("%ld.%.2ldu", l/1000, (l%1000)/10);	l = w->time[1];	add("%ld.%.2lds", l/1000, (l%1000)/10);	l = w->time[2];	add("%ld.%.2ldr", l/1000, (l%1000)/10);	add("\t");	for(i=1; i<argc; i++){		add("%s", argv[i], 0);		if(i>4){			add("...");			break;		}	}	if(w->msg[0]){		p = utfrune(w->msg, ':');		if(p && p[1])			p++;		else			p = w->msg;		add(" # status=%s", p);	}	fprint(2, "%s\n", output);	exits(w->msg);}voidadd(char *a, ...){	static beenhere=0;	va_list arg;	if(beenhere)		strcat(output, " ");	va_start(arg, a);	vseprint(output+strlen(output), output+sizeof(output), a, arg);	va_end(arg);	beenhere++;}voiderror(char *s){	fprint(2, "time: %s: %r\n", s);	exits(s);}voidnotifyf(void *a, char *s){	USED(a);	if(strcmp(s, "interrupt") == 0)		noted(NCONT);	noted(NDFLT);}

⌨️ 快捷键说明

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