test01.c

来自「minix操作系统最新版本(3.1.1)的源代码」· C语言 代码 · 共 75 行

C
75
字号
/* * Test name: test01.c * * Objective: The purpose of this test is to make sure that the timeout mechanisms * work without errors. *  * Description: Executes a select as if it was a sleep and compares the time it * has been actually sleeping against the specified time in the select call. * Three cases are tested: first, a timeout specified in seconds, second, a timeout in  * microseconds, and third, a timeout with more precision than seconds. * * Jose M. Gomez */#include <sys/types.h>#include <sys/select.h>#include <sys/time.h>#include <time.h>#include <stdio.h>#include <errno.h>#include <string.h>#define SECONDS 3#define USECONDS 3000000Lint main(void) {	int r;	time_t start, end;	/* variables for timing */ 	struct timeval timeout;	/* timeout structure */	/* Set timeout for 3 seconds */	timeout.tv_sec = SECONDS;	timeout.tv_usec = 0;   	printf("Sleeping now for %d seconds...\n", SECONDS);	/* Record time before starting */	start = time(NULL);	r = select(0, NULL, NULL, NULL, &timeout); 	printf("select return code: %d error: %s\n",		r, strerror(errno));	end = time(NULL);	printf("For a timeout with select of %d seconds, it took %d actual seconds\n",		SECONDS, end-start);	/* Set timeout for 3 seconds , but specified in microseconds */	timeout.tv_sec = 0;	timeout.tv_usec = USECONDS;	printf("\n***************************\n");   	printf("Sleeping now for %ld microseconds...\n", USECONDS);	/* Record time before starting */	start = time(NULL);	r = select(0, NULL, NULL, NULL, &timeout); 	printf("select return code: %d error: %s\n",		r, strerror(errno));	end = time(NULL);	printf("For a timeout with select of %ld useconds, it took %d actual seconds\n",		USECONDS, end-start);	/* Set timeout for 1.5 seconds, but specified in microseconds */	timeout.tv_sec = 0;	timeout.tv_usec = USECONDS/2;	printf("\n***************************\n");   	printf("Sleeping now for %ld microseconds...\n", USECONDS/2);	/* Record time before starting */	start = time(NULL);	r = select(0, NULL, NULL, NULL, &timeout); 	printf("select return code: %d error: %s\n",		r, strerror(errno));	end = time(NULL);	printf("For a timeout with select of %ld useconds, it took %d actual seconds\n",		USECONDS/2, end-start);	return 0;}

⌨️ 快捷键说明

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