进程初识
1.查看进程
ps -aux;ps -ef | 查看进程信息ps -aux | grep loop |
pid_t getpid(void) | 将这个函数运行到要查看的程序中,她的返回值就是进程id号 |
/proc | 在/proc/目录下全是以进程号为名称的文件夹 |
获取调用进程的函数int getpid(void)
创建一个?的子进程fork
2.Linux下的进程状态
运行R | R(run) | 处于激活状态 | 能直接被kill |
可中断的休眠 | S(interpret sleep) | 可以被一般的指令激活 | 能直接被kill |
不可中断的休眠 | D(disk sleep) | 一般不会被激活 | 不能kill |
停止 | T(Timinal) | 在T 状态下是不会被杀死的 | kill了,杀不掉,但是激活之后,就会执行到kill |
僵死 | Z() | 进程退出了,但是资源没有被完全释放 | 子进程先于父进程退出 |
前台进程 | S+,D+ | 有+号 | 后台程序就没有+ |
kill -l 查看kill 的功能
kill -9 强制杀死进程
kill -18 让杀死的进程继续运行
僵尸进程
子进程杀不死 [kill -9],没用-Z ----导致资源泄露
子进程先于父进程退出(kill了子进程),因为要保留退出原因,操作系统不能直接释放资源,要去通知父进程获取退出原因。而父进程没有关注这个通知,所以操作系统一直不去释放这部分资源,所以这个杀死的子进程就成了僵尸进程,不工作到时占资源
-
如何避免:进程等待
退出父进程可以避免
.孤儿进程
父进程先于子进程退出(kill了父进程),子进程成了孤儿进程,运行在后 台 她的父进程变成 1 号进程
守护进程/精灵进程 特殊的孤儿进程 脱离终端和会话影响 操作系统中 1(systemd) 就是守护进程 操作系统中是 d 结尾的文件
3.环境变量:存储系统运行参数的变量
删除一个环境变量 | unset mypath |
声明或设置一个环境变量 | export mypath(将一个普通的变量(当前shell中的变量)变成env中的变量) |
三种查看环境变量的方法 | env / set / echo $PATH 查看环境变量 set是全部的变量 |
path的含义 | 指定可执行程序的默认搜索路径 |
添加环境变量 | PATH=$PATH:/heme/python/bin这就将冒号后面的路径加到了PATH中
|
【注意】一定要加'$', | 不加$,PATH= PATH就相当于赋值,就会直接覆盖掉原来的所有PATH |
char *ptr = getenv("PWD"); //h获取env中PWD的包含的字符串
环境的全局特性:
shell终端下所运行的进程能够获取到所有到所有的环境变量,但是获取不到普通变量(普通变量只是这个shell程序 下的普通变量,换一个shell,这个普通变量是获取不到的)
代码中操作环境变量
3种方法
int main(int argc,char *argv[ ],char *env[ ]) | main函数中的第三个变量 |
extern char **enviroon | 全局变量 |
char *getenv(char *name) putenv( ) setenv( ) | 三个函 |