Linux进程理解( 三 )


查看进程
我们先来看一下如何查看Linux的进程,这里面需要用到一个指令,大家先会用就可以了,之后在解释.
[bit@Qkj 08_10]$ ps xaj
我们一看这么多进程,哪一个说我们想要的,这里需要使用管道和grep,基本指令的博客已经谈过了.
[bit@Qkj 08_10]$ ps xaj | grep 'mybin'
这里面我们已经看到存在了一个进程叫做./mybin,但是这里面就存在可一个问题,另外一个是什么?我们看到了一个grep,这个也是我们在调用指令的时候出现的另外一个进程,你写的程序被调用了叫进程,别人也是,如果我们不想看到这样的结果还可以这么做.
[bit@Qkj 08_10]$ ps xaj | grep 'mybin' | grep -v gr # grep -v gr 表示 匹配到了gr 这关键字 都不要
杀掉一个进程
我们之前都是使用一个热键CTRL+c来杀死一个现在也可以通过一个指令,后面他们的区别等会解释.
[bit@Qkj 08_10]$ kill -9 18205# -9 发送9号信号,这里先不谈 后面跟上 pid,pid在下面谈
pid
这里我们就先开始PCB里面的一些属性,上面我们截图里面可是一点都看不懂啊,就知道一个进程名.我说的具体点,这样便于我们理解.
pid是一个进程的唯一标识符,是 id 的简写.就像我们在现实生活中每个人都有一个身份证号,它可以唯一标记一个PCB.我们在说一个可以查看继承的方式.
我们去根目录里面去看一个一个文件夹,这个文件夹实时的记录了进程的pid,实时就是进程跑着的话就纪录,否则不记录.
我们查看一下这个文件夹,你就会发现蓝色的数字都是pid.
好了,现在我们已经知道了pid,那么如何把自己的和这个文件里面的pid对应起来呢?这是一个问题,不过先不要急,我们需要扩展一下第一种产看进程的方法,希望这里可以给进程的的属性带上属性名称.
[bit@Qkj 08_10]$ ps xaj | head -1# 查看 首行的 上一行
这里我们就可以查看属于自己进程的pid了,很容易
好了,这里面我们还需要谈一下下面的东西,什么是实时,看好了.如果进程正在执行,proc文件里面出现了一个pid命名的文件
只要是该进程结束了,这个文件夹就会消失,这才是实时.
好了,现在我们需要进入进程对应的文件夹里面看点东西,为了后面的事情做铺垫,这里面大家可以先不用了解.
当前目录
我们在C语言中学到过创建一个文件,如果不知名路径就会在当前路径下创建一个,之前我们说过当前路径就是源文件所在的路径,但是这种所法是不对的,准确来说,是进程所在的工作路径是当前路径.
我们先来测试一下,我们这个打开一个写的文件.
#include#include int main(){FILE* f = fopen("file.txt","w");// 没有 就去创建while(1){printf("I am a process\n");sleep(1);}fclose(f);return 0;}
我们创建一个文件夹,把可执行程序移动到这个文件里面吗,在这里执行.
这里我们就会在创建一个进程,而且进程的工作路径也发生的了改变,那么去该路径下看看是不是创建了一个文件.
好了,确实出现了,所以我们就知道了当前路径是进程所在的路径,可不是什么源代码所在的路径.
得到pid
我们不能每次都要去通过一个指令去看自己的pid吧 , 这样也太麻烦了 。网络编程为我们只提供了一些接口 。我们以后用的就是这种.
#include#include