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

📄 tee.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
/* * tee-- pipe fitting */#include <signal.h>#include <sys/types.h>#include <sys/stat.h>#include <errno.h>int openf[20] = { 1 };int n = 1;int t = 0;int aflag;char in[512];char out[512];extern errno;long	lseek();main(argc,argv)char **argv;{	int register r,w,p;	struct stat buf;	while(argc>1&&argv[1][0]=='-') {		switch(argv[1][1]) {		case 'a':			aflag++;			break;		case 'i':		case 0:			signal(SIGINT, SIG_IGN);		}		argv++;		argc--;	}	fstat(1,&buf);	t = (buf.st_mode&S_IFMT)==S_IFCHR;	if(lseek(1,0L,1)==-1&&errno==ESPIPE)		t++;	while(argc-->1) {		if(aflag) {			openf[n] = open(argv[1],1);			if(openf[n] < 0)				openf[n] = creat(argv[1],0666);			lseek(openf[n++],0L,2);		} else			openf[n++] = creat(argv[1],0666);		if(stat(argv[1],&buf)>=0) {			if((buf.st_mode&S_IFMT)==S_IFCHR)				t++;		} else {			puts("tee: cannot open ");			puts(argv[1]);			puts("\n");			n--;		}		argv++;	}	r = w = 0;	for(;;) {		for(p=0;p<512;) {			if(r>=w) {				if(t>0&&p>0) break;				w = read(0,in,512);				r = 0;				if(w<=0) {					stash(p);					return;				}			}			out[p++] = in[r++];		}		stash(p);	}}stash(p){	int k;	int i;	int d;	d = t ? 16 : p;	for(i=0; i<p; i+=d)		for(k=0;k<n;k++)			write(openf[k], out+i, d<p-i?d:p-i);}puts(s)char *s;{	while(*s)		write(2,s++,1);}

⌨️ 快捷键说明

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