73 lines · 1016 B · C
RawDownload
#include "u.h"#include "libc.h"#include "thread.h" enum{	STACK = 8192}; int	p[2]; voidwritethread(void *v){	char buf[200];	int	n; 	for(;;){	n = read(0, buf, sizeof buf-1);	if (n>0) {		buf[n] = 0;		print("read0: \"%s\"\n", buf);		if (buf[0]=='q') {			close(p[1]);			threadexits(nil);		}	}	write (p[1], buf, n);//	n = read(p[1], buf, sizeof buf-1);//	if (n>0) {//		buf[n] = 0;//		print("readb: \"%s\"\n", buf);//	} 	}}  voidthreadmain(int argc, char **argv){	char buf[200];	int	n;	int	fd; 	ARGBEGIN {	} ARGEND 	fd = create(*argv, OWRITE, 0666);	print("create wauäm: %d\n",fd );	fprint(fd, "hoppla\n");	dup(fd, -1);	dup(fd, 128);	close(fd); 	pipe(p);	proccreate(writethread, nil, STACK); 	print("ns: %s\n", getns()); 	for(;;) {		n = read(p[0], buf, sizeof buf-1);		if (n<=0)			break;		buf[n] = 0;		print("readp: \"%s\" rand:%08ux\n", buf, truerand());		write(fd, buf, n);		write(p[0], "huhu", 5);	}	close (p[0]);	fprint(2, "termin\n");	threadexitsall(nil);}