优先级
- 为什么需要优先级?
答:资源【网卡、外设、CPU等】太少,为保证合理分配,所以需要优先级。 - 查看进程:ps -l
- 优先级的属性:
- PRI:优先级:数字越小,优先级越高。
- NI:nice值,优先级的修正数据,新的优先级要加的值。为负,则表明要PRI值要变小,优先级要变大。
- 如何调整进程优先级?
答:有接口,命令top 进入,r,输入进程PID,再输入调整值,使优先级值改变。 - 优先值高(小)的一定优先吗?
答:优先级再怎么设置也只能是相对优先级,否则会出现“饥饿问题”。因为进程需均衡享受资源,所以还会有别的调度算法。
环境变量:文件路径
- 为什么自己写的文件执行要用 ./,而系统命令直接就可以?
答:./是表明路径,而系统命令能直接执行是因为配置了环境变量。 - 拓展:安装文件的本质是什么?
答:安装过程:其实是拷贝文件到系统环境变量的过程。 - 添加环境变量的方式:
export PATH=$PATH:路径 - 查看环境变量的方式:
env:查看全部
echo $name - 环境变量的本质:
答: 我们编程时创建变量是为了在内存上开辟空间,而环境变量的本质也是OS在内存/磁盘文件中开辟的空间,它开辟空间是为了保存系统相关的数据。环境变量是操作系统开辟的空间,保存KV值,包括变量名和数据。 - Session环境变量是什么?
答:系统上存在一种的只与本次登陆(session)有关的环境变量。 - 如何玩(验证)Session变量?
答:可直接在命令行定义变量,命令行定义的变量:一般称为【本地变量】。可用echo查看。再次登陆就没有了。解决办法:export PATH=$PATH:路径,可设session变量为环境变量。不想用可以用unset取消本地或环境变量。
- VIM编辑器下多行注释的方法:
1.ctrl+v:进入列模式
2. 大写I插入模式:// 或 #
3. ESC:按完才生效
实验:代码获取环境变量
- 预备知识点:
- main函数可携带参数:argc、*argv[]。
- argc表示数组中有几个值。argv是指针数组。指向的区域存多个数组的第一个元素地址。
char* a[10]:[]优先级高于*,所以整体是数组,它的内容是char*,指针数组,内含多个字符串首地址。
- 步骤:
- 编写C程序
根据argc去拿字符串数组中每个首元素地址。 - 编译后运行:
发现对于字符串和字符的命令都能拿到。 - 如下图示:argv最后一个是NULL。
argc用来表明个数,但是不用argc也可以,但是用argc使得main中可以判断传参数量是否是你想要的个数,且习惯上传数组多给一个数量参数很合适。
- 那么拿到这些参数可以做什么?
答:可以通过不同命令行参数,使得main执行不同功能。Linux【选项】的本质就是区分命令行参数执行不同功能。
环境变量的组织方式:
- 环境变量的组织方式是什么?
答:如上命令行参数的实验,本质和main中不同命令选项一样。环境变量本质是指针数组表,如实验中的char* argv[],指向字符串首地址。
- main()中如何输出env?
答: main()函数还直接输出传递环境变量:参数 char *env[]
这样可以直接输出env环境变量,和你在bash命令行中输出的结果一样。
a. vim 编写C程序
b. 执行:
c. 结果
- 为什么可以这样做?
因为环境变量有全局性。,extern方式可以引入全局变量。
- 最常用的环境变量获取方式:
**getenv:**头文件在stdlib.h
效果:
显然,这样获取环境变量更加灵活。它的本质也是使用总的env环境变量。
- 扩展:
命令行上启动的进程,父进程都是bash。
-
如何验证环境变量具有全局属性?
答:export导入环境变量,子进程中可以输出、可以找到新导入的环境变量。 -
系统配置环境变量文件:
~ /.bashsrc :系统的环境变量
~/.bash_profile:shell的环境变量
/etc/bashsrc:导入环境变量操作