Linux进程基础知识梳理

 1.什么是进程?为什么要有进程:

   程序的一次执行就是一个进程。引入进程这是为了实现并发技术,就是可以在同一时间同时执行多项任务的技术。

2.Linux进程分类:

   1.交互进程   2.批处理进程   3.守护进程

3.进程的三态:

   1.就绪状态。当进程已经分配到除CPU以外所有的必要的资源,只要活得处理器便可以立即执行,这时的状态就是就绪态。

   2.执行状态。当进程已经获得处理器,其程序正在处理器上执行,此时的进程状态称为执行态。

   3.阻塞状态。正在执行的过程,由于等待某个事件发生而无法执行,于是放弃处理进入等待态。

4.进程创建:

   fork(),一次调用两次返回,在子进程中返回0,在父进程中返回子进程的PID。

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>


// fork()  一次调用两次返回, 在子进程中返回0; 在父进程中返回子进程的PID。
int main()
{
	pid_t pid;
	int count = 0;
	
	printf("hello linux , count = %x\n",&count);
	pid = fork();
	printf("@@@fork() is %d\n", pid);
	if(pid > 0)
	{
		printf("+++child has the pid : %d\n",pid);
		count ++;
		printf("+++count = %d, %x\n",count, &count);
	}
	else if(!pid) //子进程
	{
		sleep(1);
		printf("---count = %d, %x\n",count, &count);
	}
	else
	{
		printf("fork error\n");
	}
	
	count++;
	printf("pid = %d ,  count = %d\n", getpid(), count);
	
	return 0;
}

 5.僵尸进程:

   僵尸进程就是已经结束了的进程,但是还没有从进程表中删除,它放弃了几乎所有内存空间,没有任何可执行代码,也不能被调度,它需要它的父进程为他收尸,如果父进程没有安装SIGCHLD信号处理函数调用wait()或者waitpid()等待子进程结束,又没有显示忽略该信号,那么它就一直保持僵尸状态。如果父进程结束了,那么init进程会接手这个进程为它收尸,它还是可以被清除的。但是,如果父进程是一个循环,不会结束,那么子进程就会一直保持僵尸状态。

猜你喜欢

转载自blog.csdn.net/zwt0112/article/details/81334369
今日推荐