进程概念:
程序:存放在磁盘上的指令和数据的有序集合(文件)静态
进程:执行一个程序所分配的资源的总称,进程是程序的一次执行过程
进程是动态的,包括创建,调度,执行和凋亡。
内存:代码段,数据段,bss段(程序) 堆,栈,进程控制块
进程在RAM中 程序在FLash中
进程类型:
交互类型:在shell下启动 以在前台运行,也可以在后台运行
批处理进程:与终端无关,被提交到一个作业队列中以便顺序执行
守护进程:和终端无关,,一直在后台运行
进程状态:运行态 可中断等待 不可中断等待 停止态,僵尸态 ,进程占用cpu
在linux下命令:
ps:快照
查看进程:ps -elf |grep 进程名 可以查看进程的PID号
程序运行时:ctrl+z将运行的前台进程转为后台进程转为后台进程并停止(挂起)
ctrl+c :将前台进程关闭
直接后台运行程序:./程序名 &
jobs 查看后台进程 bg+PID将挂起的进程在后台运行 fg+PID把后台的进程放到前台运行
创建子进程:
pid_t fork(void) 创建新的进程 失败返回-1
成功时父进程返回子进程的进程号,子进程返回0
通过fork的返回值区分父进程和子进程
例如:进程A fork()之后产生子进程B
A和B代码一样,但是B只执行fork()之后的代码
父进程中代码可以在 if(pit>0)中编写
子进程可以在else if(pit==0)中编写
父子进程的执行顺序不确定 操作系统规定
子进程继承父进程内容 ,父子进程有独立的地址快捷键 互不影响
若父进程先结束,子进程成为孤儿进程,被init进程收养 子进程变成后台进程
若子进程先结束:父进程没有及时回收,子进程会变成僵尸进程。
后续更新线程!