进程是一个程序的一次执行过程。其中进程(process)包括正文段、用户数据段、系统数据段(临时堆栈、所有寄存器之类),而程序(program)则只包含正文段跟用户数据段。
PID唯一标识一个进程。(PPID父进程号,不是唯一)
进程分类:交互进程(shell控制和运行)、批处理进程(不属于终端,被提交到队列中)、守护进程(后台)
运行状态:运行态(R 正在运行或者准备运行【就绪态】)、等待态(S 等待某件事或某资源)、停止态、死亡态(僵尸态,已终止,但在进程向量数组中占有一个task_struct结构)
linux 命令:ps -ef 查看所有进程
top 动态显示进程
kill 结束进程
对应linux ,所有进程数据存放在/proc(虚拟文件系统,内核控制)
进程系统调用:
pid_t fork();所需头文件sys/types.h(提供类型pid_t的定义)、unistd.h。等0为子进程,大于0为父进程。
exit(0)
pid_t wait(int *status)(阻塞进程,直至人一个子进程结束或者收到信号) waitpid(pid_t pid,int *status,int options)(指定某个进程) 包含头文件:sys/types.h sys/wait.h
守护进程:1、创建子进程,父进程退出(变孤儿进程)
2、在子进程中创建新回话(setsid())
3、改变当前目录为跟目录(chdir(“./”))
4、重设文件权限掩码(umask(0))
5、关闭文件描述符 (for(i=0,i<MAXFILE;i++)close(i); )