trcrv.c

来自「su 的源代码库」· C语言 代码 · 共 50 行

C
50
字号
/* Copyright (c) Colorado School of Mines, 2006.*//* All rights reserved.                       */#include	"sftest.h"#if __STD_Cssize_t myread(Sfio_t* f, Void_t* buf, size_t n, Sfdisc_t* disc)#elsessize_t myread(f, buf, n, disc)Sfio_t*	f;Void_t*	buf;size_t	n;Sfdisc_t* disc;#endif{	return sfrd(f,buf,n,disc);}Sfdisc_t Disc = {myread, NIL(Sfwrite_f), NIL(Sfseek_f), NIL(Sfexcept_f)};MAIN(){	int	fd[2];	if(pipe(fd) < 0)		terror("Can't open pipe\n");	if(sfnew(sfstdin,NIL(Void_t*),(size_t)SF_UNBOUND,fd[0],SF_READ) != sfstdin)		terror("Can't initialize sfstdin\n");	sfset(sfstdin,SF_SHARE,1);	sfdisc(sfstdin,&Disc);	if(sfnew(sfstdout,NIL(Void_t*),0,fd[1],SF_WRITE) != sfstdout)		terror("Can't initialize sfstdout\n");	sfputr(sfstdout,"111\n222\n333\n",-1);	sfsync(sfstdout);	if(strcmp(sfgetr(sfstdin,'\n',1),"111") != 0)		terror("sfgetr failed1\n");	if(sfstdin->_endb > sfstdin->_next)		terror("sfgetr reads too much1\n");	if(strcmp(sfgetr(sfstdin,'\n',1),"222") != 0)		terror("sfgetr failed2\n");	if(sfstdin->_endb > sfstdin->_next)		terror("sfgetr reads too much2\n");	TSTEXIT(0);}

⌨️ 快捷键说明

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