Linux第十二节 — 进程概念详解 + 操作系统引入

一、复习

补充点:

在vim中如果我们想要不关闭vim且执行指令:

可以在下面的底行模式进行切换(例如使用man手册查看sleep函数 - 退回去直接按q即可退出!)

1、通过ps命令查看进程 

ps ajx | grep proc

可以通过管道查看当前运行的进程!

ps ajx | head -1 && ps ajx | grep proc
ps ajx | head -1 ; ps ajx | grep proc

上面两种方法一直(可以用&&表示也可以用;表示)

表示两条指令同时运行!

  • PID表示该进程的编号
  • command表示该执行该进程运用了什么指令!
  • 下面的grep --color=auto proc是因为我们在运用grep关键字过滤proc 
ps ajx | head -1 ; ps ajx | grep proc | grep -v proc

 这里的 -v 指的是反向匹配,即不含关键字proc的内容;

2、ps指令的本质是什么?(deepseek)

        Linux系统中ps指令的本质是通过读取/proc虚拟文件系统中的进程数据来获取系统进程状态信息

  /proc是内核提供的虚拟文件系统,以目录和文件的形式动态反映系统运行状态,其中每个进程对应一个以PID命名的子目录,包含该进程的详细运行时信息(如内存映射、环境变量等)。ps无需特殊权限即可运行,因为它仅读取这些公开的虚拟文件。

3、kell杀掉一个进程

kill -9 + (进程PID号)

在操作系统中有不同的进程,每个进程都有自己唯一的编号PID位于PCB中!

ps指令(显示进程的信息)的本质:实际上就是通过系统调用接口对PCB结构体进行遍历!打印其信息!

如果想要获取自己的PID进程应该怎么办?

4、第一个系统调用接口get_pid()

        操作系统不相信别人,不希望用户直接拿到tast_struct访问内容,只能通过系统调用接口因此当前系统内存在一个系统调用接口用来获取PID的值:getpid()

        调用该系统调用接口我们需要包含对应的头文件!(其返回值是pid_t,本质是一个有符号的整数) 

        因此getpid()的实质就是自己找到自己对应的task_struct,然后访问其中,找到自己对应的pid的值,再返回给上层!

getpid()函数会返回一个pid_t类型:实质上就是有符号整数!

  1 #include<stdio.h>
  2 #include<unistd.h>
  3 int main()
  4 {
  5   while(1)
  6   {
  7    // pid_t_id = getpid();
  8     printf("I am process , my pid is %d\n",getpid());
  9     sleep(1);
 10   }                                                                                                                                                                                    
 11   return 0;
 12 }

获取到的pid值和通过ps查阅的值是一样的! 

进程终止后重新启动PID值发生改变很正常!

5.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一道秘制的小菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值