📄 tpipemove.c
字号:
/* Copyright (c) Colorado School of Mines, 2006.*//* All rights reserved. */#include "sftest.h"MAIN(){ int fd[2]; Sfio_t *fr, *fw; char *s; int n, w; if(pipe(fd) < 0) terror("Can't open pipe\n"); if(!(fr = sfnew(NIL(Sfio_t*),NIL(Void_t*),(size_t)SF_UNBOUND,fd[0],SF_READ)) || !(fw = sfnew(NIL(Sfio_t*),NIL(Void_t*),(size_t)SF_UNBOUND,fd[1],SF_WRITE)) ) terror("Can't open pipe streams\n"); sfset(fr,SF_SHARE,1); if(sfopen(sfstdout,tstfile(0),"w") != sfstdout) terror("Can't open for write\n"); if(sfopen(sfstdin,tstfile(0),"r") != sfstdin) terror("Can't open for read\n"); for(n = 0; n < 100; ++n) if((w = sfwrite(fw,"123456789\n",10)) != 10) terror("Writing to pipe w=%d\n",w); if((n = (int)sfmove(fr,sfstdout,(Sfoff_t)100,'\n')) != 100) terror("sfmove failed n=%d\n", n); sfclose(sfstdout); for(n = 0; n < 100; ++n) { if(!(s = sfgetr(sfstdin,'\n',1)) ) terror("Can't read data\n"); if(strcmp(s,"123456789") != 0) terror("Wrong data\n"); } TSTEXIT(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -