lat_pipe.c

来自「经典的linux源码」· C语言 代码 · 共 48 行

C
48
字号
/* include lat_pipe1 */#include	"unpipc.h"voiddoit(int readfd, int writefd){	char	c;	Write(writefd, &c, 1);	if (Read(readfd, &c, 1) != 1)		err_quit("read error");}intmain(int argc, char **argv){	int		i, nloop, pipe1[2], pipe2[2];	char	c;	pid_t	childpid;	if (argc != 2)		err_quit("usage: lat_pipe <#loops>");	nloop = atoi(argv[1]);	Pipe(pipe1);	Pipe(pipe2);	if ( (childpid = Fork()) == 0) {		for ( ; ; ) {		/* child */			if (Read(pipe1[0], &c, 1) != 1)				err_quit("read error");		    Write(pipe2[1], &c, 1);		}		exit(0);	}		/* 4parent */	doit(pipe2[0], pipe1[1]);	Start_time();	for (i = 0; i < nloop; i++)		doit(pipe2[0], pipe1[1]);	printf("latency: %.3f usec\n", Stop_time() / nloop);	Kill(childpid, SIGTERM);	exit(0);}/* end lat_pipe1 */

⌨️ 快捷键说明

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