文章目录
- 📕查看进程
- 🚀/proc目录
- 🚀cwd与exe
- 📕改变进程的工作目录
- 🚀chdir指令
- 📕vim卡住了怎么解决
本篇文章接着【LInux进程(一)】继续编写。
📕查看进程
🚀/proc目录
除了上篇文章中的用ps命令在系统中去搜索去查,还有一种方法。
Linux系统会把进程相关的内存的数据以文件系统的形式存储在一个特定的目录里面,这个目录在那里呢?是在 /proc目录下的。
该目录是在根目录下的。
说白了,就是每个进程的数据以文件的形式给我们存储起来了,显示到我们的文件系统上。
当我们运行一个伪代码时,然后再去/proc目录里面去查看该进程,发现是可以查看到的,但是当我们ctrl^C结束进程后,就查询不到了。
🚀cwd与exe
当我们打开这个文件可以发现两个数据,如下图,cwd(下面会简单讲解)与exe
红色圈出来的是:当前这个进程16229对应的磁盘上对应的可执行程序以及所在的路径。
我们来看这样一个现象:(如图)
当我们启动一个进程的时候,这个进程已经在运行了,然后把它的可执行程序删除掉了,但是这个我们查询到该进程还在执行,只不过查询到的进程的exe处于高亮闪烁状态。
思考:那为什么可执行程序都删除了,怎么还在运行呢?
- 因为在运行一个程序的时候,实际上是将程序从磁盘拷贝到了内存,换句话说,我们现在的进程体积比较小,已经被拷贝到内存了,删除了可执行程序实际是将磁盘上的删除了,内存中没有删除。
现在我们现在看看cwd是什么意思:当前进程所对应的当前工作目录。
- 我们先来看看这句话的理解:
文件操作:当我们用fopen打开一个文件的时候,如果这个文件是不存在的文件,则会再当前路径下,创建一个文件。这个当前路径是深什么意思呢?
意思就是当前进程所对应的cwd(当前工作目录)。这个路径和源代码在同一个目录下,就是当我们在Vs中,打开当前路径,这就是对应的该进程的工作目录。
📕改变进程的工作目录
🚀chdir指令
指令 chdir,输入指令查看该指令
# man 2 chdir
如图:
使用下面该伪代码看看chdir的使用
下面代码的测试逻辑:
首先打印进程编号(查询当前目录是否改变),然后当打印出改变当前目录后,再次查询当前目录是否改变,等已经创建完成后,去改到的目录里面去查看是否新建了该文件。
1 #include<stdio.h>
2 #include<sys/types.h>
3 #include<unistd.h>
4
5 int main()
6 {
7 printf("slef id:%d\n",getpid());
8 printf("改变工作目录前\n");
9
10 sleep(30);
11 chdir("/home/tw");
12 printf("改变工作目录后\n");
13 sleep(30);
14
15 FILE* fp = fopen("file.txt","w");
16 if(fp==NULL)
17 return 0;
18 fclose(fp);
19
20 printf("文件创建完成\n");
21 sleep(50);
22 return 0;
23 }
运行结果:
📕vim卡住了怎么解决
这个问题我是经常碰到:vim突然按什么都没反应,卡死一样,解决方法也很简单。
- 1.原因:按了[crtl]+s 停止了vim界面刷新
- 2.解决办法:按下 [crtl]+q恢复界面刷新