[UNIX]进程调度nice()函数测试

#include <apue.h>

// jincheng diaodu
#include <errno.h>
#include <sys/time.h>
#if defined(MACOS)  // MAC
#include <sys/syslimits.h>
#elif defined(SOLARIS) // SOLARIS
#include <limits.h>
#elif defined(BSD)   // BSD
#include <sys/param.h>
#endif


unsigned long long count;
struct timeval end;

void checktime(char *str)
{
	struct timeval tv;
	gettimeofday(&tv,NULL);
	if(tv.tv_sec >= end.tv_sec && tv.tv_usec > end.tv_usec){
		printf("%s count = %lld\n",str,count);
		exit(0);
	}

}

int main(int argc,char **argv)
{
	pid_t pid;
	char *s;
	int nzero,ret;
	int adj = 0;
	setbuf(stdout,NULL);
#if defined(NZERO)
	nzero = NZERO;
#elif defined(_SC_NZERO)
	nzero = sysconf(_SC_NZERO);
#else
#error NZERO undefined
#endif
	printf("NZERO = %d\n",nzero);
	if(argc == 2)
		adj = strtol(argv[1],NULL,10);
	gettimeofday(&end,NULL);

	end.tv_sec += 10; /*run for 10 seconds*/


	if((pid = fork()) < 0 ){
		err_sys("fork failed");
	}else if(pid == 0){  /* child */
		s = "child";
		printf("current nice value in child is %d adjusting by %d\n",
				nice(0)+nzero,adj);
		errno = 0;
		if((ret = nice(adj)) == -1 && errno != 0){
			err_sys("child set scheduling priority");
		}

		printf("now child nice value is %d\n",ret+nzero);

	}else{  /* parent */
		s = "parent";
		printf("current nice value in parent is %d\n",
						nice(0)+nzero);
	}

	for(;;){
		if(++count == 0)
			err_quit("%s counter wrap",s);

		checktime(s);
	}
}


技术社区:includestdio.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深入沟通_it6688668

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值