上一篇博客也在记录进程的一些知识,这一篇博客是在哪个基础上继续谈谈进程。

一.进程优先级

CreateProcess 进程优先级 优先级是在创建进程_CreateProcess 进程优先级

  那么加入NI值之后,PRI的值变成 PRI(new) = PRI(old) + nice;

          那么当nice值为负值的时候,进程的PRI将变小,进程的优先级将变大,进程相对于原来的PRI值会更早被执行。那么当nice值为正的时候,相反的情况;

2.调整已经存在的进程nice值:renice


eg:接下来写一个小程序验证一下。


#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>

int main(int argc,char* argv[],char* env[])
{
	pid_t id = fork();

	if(id<0)
	{

	}
	else if(id == 0)  //child
	{
		printf("child: pid %d ,ppid %d\n",getpid(),getppid());
		sleep(20);
		exit(1);
	}
	else   //father
	{
		printf("father pid: %d,ppid %d\n",getpid(),getppid());

		while(1);
	}
	return 0;
}



CreateProcess 进程优先级 优先级是在创建进程_#include_02



上述使用的nice命令:sudo nice -n -5 <可执行文件的路径>

上述使用的renice命令:sudo renice -10 -p <进程号>


二.进程的创建执行


介绍一种进程:孤儿进程

)所收养,并由init进程对它们完成状态手收集工作。

eg:测试程序



#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>

int main(int argc,char* argv[],char* env[])
{
	pid_t id = fork();

	if(id<0)
	{

	}
	else if(id == 0)  //child
	{
		printf("child: pid %d ,ppid %d\n",getpid(),getppid());
		//sleep(20);
		//exit(1);
		while(1);
	}
	else   //father
	{
		printf("father pid: %d,ppid %d\n",getpid(),getppid());

		//while(1);
		sleep(3);
		exit(1);
	}
	return 0;
}



CreateProcess 进程优先级 优先级是在创建进程_进程优先级_03


以上就是本人在学习过程中的一些经验总结。当然,本人能力有限,难免会有纰漏,希望大家可以指正。