开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 11 天,点击查看活动详情
孤儿进程
父进程创建了一个子进程,如果父进程提前退出,那么子进程就被称为孤儿进程。 孤儿进程被1号init进程领养,此时就会观察到该进程的父进程就是1号进程。 为什么要被领养? 未来子进程退出的时候,父进程早已不在,需要领养进程来进行回收
进程的优先级
为什么要有优先级? 因为cpu的资源有限!进程太多,需要通过某种方式竞争资源 什么是优先级? 确认是谁应该先获得某种资源,谁后获得资源
linux下的优先级
优先级=老的优先级+nice值
当我们修改nice值的时候,老的优先级都是从80开始进行修改的
nice可以修改的范围-20~19
修改:top命令,然后按r,输入进程id,然后输入要修改的nice的值,不能修改的话,可以提升一下权限。
上下文数据
如果进程A正在被运行,那么cpu内的寄存器里面一定保存的是进程A的临时数据! 而这个保存的临时数据就叫做A的上下文。 上下文数据是不可以被丢弃的。 当进程a暂时被迫下来的时候,需要进程a顺便带着自己的上下文数据。 带着暂时保存的目的:为了下次运行的时候,能恢复上去,就能继续按照之前的逻辑继续向后运行,就如同没有中断过一样。
环境变量
初始: 1.系统命令可以直接运行,我自己写的程序必须要带路径!,如果不想带呢?如果我想让我们的程序和运行的普通命令一样,该怎么样呢? 当我们运行程序的时候,都是从环境变量中里面的路径找。 常见的环境变量:
- **PATH: **指定命令的搜索路径
- HOME:指定用户的主工作目录(即用户登录到Linux中时,默认的目录)
- SHELL:当前Shell,它的值通常是
/bin/bash
查看环境变量:echo $PATH
改变环境变量,在里面添加一个你写的程序的路径
export PATH=$PATH:路径,$PATH这个原来老的路径,路径都是用:进行分割的。
env显示的是所以的环境变量
如何通过代码获取环境变量:
main函数中最多有3个变量,
int main(int argc, char *argv[], char *env[])
前两个变量为命令行参数,最后一个参数为环境变量参数
- 用全局的变量
environ获取 - 用
getenv获取,用man查看它是怎么用的
进程的环境变量是怎么来的呢?从父进程继承而来,如果一路往上追,就到了bash
验证:给bash增加一个环境变量,子进程就会继承到该环境变量。同时也说明了环境变量具有全局属性,可以被所有进程继承。
命令行上可以设置两种环境变量——一种是局部的ml=666,一种是全局的export ml=666
有命令行参数的目的是同一个程序用不同的参数有会有不同的效果