1.操作系统
进程是资源的单位,拥有独立的地址空间,数据区,堆栈区
子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程到底什么时候结束。 当一个进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。
僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符(进程ID)仍然保存在系统中。这种进程称之为僵死进程。
线程是程序执行和系统调度的单位,线程间可以共享一些数据
内存储器、外存储器(硬盘)、swap
Linux四大组件:shell,文件系统,应用程序,内核
2.g++编译命令
g++ test.cpp //默认生成名为a的可执行文件
g++ test.cpp -o test //输出名为test的可执行文件
./test //运行exe文件
注:gcc/g++ 在执行编译时,进行了4步
① 预处理,生成.i的文件[使用-E参数]
② 将预处理后的文件转换成汇编语言,生成文件.s[使用-S参数]
③ 将汇编语言变为目标代码(机器代码)生成.o的文件[使用-c参数]
④ 连接目标代码,生成可执行程序[使用-o参数]
静态链接:在生成可执行程序之前,将相互依赖的.o文件链接在一起,生成可执行文件
动态链接:程序运行阶段,发现有依赖时,再去加载相应的.o文件到内存中
make工具调用makefile文件中用户指定的命令来进行编译和链接,这些命令中就包含了调用g++,makefile文件由CMakeLists.txt文件生成
3.gdb调试命令
g++ -g -o hello hello.cpp
gdb + 可执行文件名
r 运行程序
b 添加断点
c 运行到下一个断点
n 下一步
s 跟踪进入函数
p 打印变量值
bt 查看函数调用栈信息
4.vim文件编辑器
打开文件:vim + filename
i: 从光标所在位置开始插入
I: 将光标移动到行首,然后进入插入模式
a: 从光标所在位置的下一个字符处开始插入
A: 将光标移动到行尾,然后进入插入模式
o: 在光标所在行的下方,新建一行,进入插入模式
O: 在光标所在行的上方,新建一行,进入插入模式
s: 删除光标所在字符,然后进入插入模式
S : 删除所在行,然后进入插入模式
/:查找字符
R:替换字符
>>:缩进(相当于一个tab)
<<:反缩进
可视块ctrl+v
选择要操作的行;输入I,进入insert模式;输入完后按Esc键
y:复制内容
5.rdesktop远程工具
rdesktop -g 分辨率 -P -z -x l -r sound:off -u 用户名 远程IP