1.Linux操作命令
cd:切换当前目录
ls:查看当前文件与目录
grep:通常与管道符命令一起使用,用于对一些命令的输出进行筛选和加工
cp:复制文件或文件夹
mv:移动文件或文件夹
rm:删除文件或文件夹
ps:查看进程情况
kill:向进程发送信号
tar:对文件进行打包
cat:查看文件内容
top:查看操作系统的信息,如进程,CPU占用率,内存信息
free:查看内存使用情况
pwd:显示当前工作目录
mkdir:创建文件夹
rmdir:删除一个空目录
rm:删除一个文件或目录(rm -rf./*删除当前目录)
vi里面的操作:
u:撤销上一步的操作
ctrl+r:将原来的撤销重做一遍
U:恢复一整行原来的面貌(文本打开时的状态)
:wq 保存退出
:e! 放弃修改,重新回到文件打开时的状态
2.静态库和动态库如何制作及使用,区别?
命名规则、制作指令、使用、区别
1.静态库的制作与使用-命名规则
Linux:
libxxx.a
lib:前缀(固定)
xxx:库的名字,自己命名
.a:后缀(固定)
Windows:
libxxx.lib
2.动态库的制作与使用-命名规则
Linux:
libxxx.so
lib:前缀(固定)
xxx:库的名字,自己命名
.so:后缀(固定)
Windows:
libxxx.dll
3.区别
1.链接时间和方式
静态库:静态库gcc进行链接时,会把静态库中的代码打包到可执行程序中,编译时加载。
发布程序时无需提供静态库,移植方便
消耗内存,更新部署发布麻烦
动态库:动态库gcc进行链接时,动态库的代码不会打包到可执行程序中,运行时加载。
发布程序时需要提供动态库
占用内存小,更新部署发布简单
3.大端和小端判断方式
大端和小端指的是字节序,顾名思义就是字节的顺序。就是大于一个字节类型的数据在内存中存放的顺序。
大端:一个整数的最高位字节存储在内存的低地址处。
小端:高存高。
定义变量int i=1;将 i 的地址拿到,强转成char*型,这时候就取到了 i 的低地址,这时候如果是1就是小端存储,如果是0就是大端存储。
void panduan(){
int i = 1;
char c = (*(char*)i);
if(c)
cout<<"小端\n";
else
cout<<"大端\n";
}
4.什么是孤儿进程,什么是僵尸进程,如何解决僵尸进程
孤儿进程:
孤儿进程指的是一个父进程退出后,而他的一个或多个子进程还在运行中,那么这些子进程将成为孤儿进程。
孤儿进程将被init进程(进程号为1)所收养,并且由init进程对他们完整状态收集工作,孤儿进程一般没有危害。
僵尸进程:
僵尸进程是指一个进程使用fork()函数创建子进程,如果子进程退出,而父进程没有调用wt()或者wtpid()系统调用取得子进程的终止状态,那么子进程的进程描述符仍旧保存在系统中,占用系统资源,这种称为僵尸进程。
解决僵尸进程:
为了防止僵尸进程,在fork()函数创建子进程后,要及时在父进程中使用wt()或者wtpid()系统调用,等子进程结束后,父进程回收子进程PCB资源。
当子进程退出的时候,内核会给父进程一个sigchld信号,所以可以建立一个捕获sigchld信号的信号处理函数,在函数体中调用wt()或者wtpid(),就可以清理退出的子进程防止僵尸进程。