Linux如何知道当前进程的ID

深入理解Linux进程ID 要想了解内核如何来组织和管理进程ID,先要知道进程ID的类型:内核中进程ID的类型用pid_type来描述,它被定义在include/linux/pid.h中{};PID 内核唯一区分每个进程的标识pidLinux 中在其命空间中唯一标识进程而分配给它的一个号码,称做进程ID号,简称PID。在使用 fork 或 clone 系统调用时产生的进程均会由内核分配一个新的唯一的PID值这个pid用于内核唯一的区分每个进程 阅读详情

在应用程序中可以通过getpid这个系统调用来获得当前进程的pid,在内核中可以通过current来获取当前进程的相关信息。而getpid这个系统调用实际上在内核中也是通过current来获取进程pid的,那么current是怎么来的呢?


其实,current是根据当前的栈指针计算得来的(具体计算方法这里不详细描述了)。栈指针是在进入内核时设置的,例如,应用程序调用getpid系统调用,进入内核后需要设置栈指针等,但是栈指针的值需要依据当前进程来获得,而栈未设置便不能使用current,怎么获得当前进程的内核栈地址呢?


原来,在GDT中有一个任务状态段,这个段的esp字段存储了当前进程的栈指针,因为每次进程切换时内核都把当前进程的内核栈指针保存到esp字段,所以读取esp字段就可以获得当前进程的内核栈地址了。


PS:在Intel的设计中,每一个进程都有自己的TSS段,但是Linux内核却只是为每个CPU核心建立了TSS段,这样做简单有效。

linux -- 进程的查看、进程id获取进程的杀死 进程查看 ps ax : 显示当前系统进程的列表  ps aux : 显示当前系统进程详细列表以及进程用户 ps ax|less : 如果输出过长,可能添加管道命令 less查看具体进程, 如:ps ax|grep XXX(XXX为进程称)   获取进程id shell获取进程ID的方法:   ps -A |grep "cmdname"| awk '{p 阅读详情

相关推荐

杀死进程的N种姿势你知道

首发:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng 四折购书福利不要错过,鉴于问我推荐书的朋友比较多,过几天我会整理一个自己的书单分享给大家,有的好书存在缺货情况,建议早下手。好了,正文开始。 前言 你是如何终止你的程序的?在《killall为什么找不到你的进程》一文中提到了几个杀死进程的方法,本文来总结一下有哪些方法可以终止进程。 ctrl+c ...

守望的博客-编程珠玑 1935

Shell 命令 根据端口 查看、关闭 进程 、 端口 和PID互相查询

根据端口 查看、关闭 进程 、端口 和PID互相查询

weixin_40863853的博客 2463

获取当前进程信息的方法——Linux内核代码实现

Linux内核代码中,获取当前进程的信息是一项非常重要的任务。通过访问任务结构体中的各种成员,可以获得想要的进程信息。本文提供了获取当前进程PID进程、状态、优先级和调度策略等信息的代码实现,希望能够对从事内核代码开发的读者有所帮助。在内核代码中获取当前进程的信息,首先需要获取当前进程对应的任务结构体,任务结构体在内核代码中表示了进程的各种信息。在Linux内核代码中,获取当前进程的信息非常重要。本文将介绍如何通过内核代码实现获取当前进程信息,并提供相应的代码实现。三、获取当前进程进程

uote_e的博客 980

参加校招面试测试岗位一次次被刷,耗时一个多月经常偷偷在晚上哭。

这两年除了工作以外,其余时间基本上都在学习,打磨自己的技术水平。也会坚持上论坛写写东西,也因此结识了很多优秀的小伙伴

weixin_56502375的博客 4859

在shell 中利用命令查看某个进程进程id

/usr/sbin/pidof      xxsmain-run

boshuzhang的专栏 2486

使用Shell脚本查找程序对应的进程ID,并杀死进程

#!/bin/shNAME=$1echo $NAMEID=`ps -ef | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk {print $2}`echo $IDecho "---------------"for id in $IDdokill -9 $idecho "killed $id"doneecho "--------------

mingyuan's workspace 1万+

linux进程的用户ID

linux进程的用户ID1. 前言最近关于”太极越狱的iOS 8.1.3-8.4含有重大安全后门,越狱后导致任意APP可以提权到Root”新闻在安全圈传的比较广,具体的一篇文章见:太极越狱重大安全后门。从这篇分析文章中看到主要就是因为太极越狱修改了setreuid这个系统调用,导致任意APP都可以通过setreuid(0,0)来获取root权限。2. setreuid定义 #include <s

liuxingen的专栏 1865

Linux系统技巧:无需知道进程ID,轻松关闭应用程序

在不知道具体进程ID(PID)或者进程可能会变动的情况下,关闭MinIO服务器的方法通常依赖于你如何启动MinIO以及你的操作系统环境。

全栈开发工程师 1192

Linux 内核进程管理之进程ID

Linux 内核使用 task_struct 数据结构来关联所有与进程有关的数据和结构,Linux 内核所有涉及到进程和程序的所有算法都是围绕该数据结构建立的,是内核中最重要的数据结构之一。该数据结构在内核文件 include/linux/sched.h 中定义,在Linux 3.8 的内核中,该数据结构足足有 380 行之多,在这里我不可能逐项去描述其表示的含义,本篇文章只关注该数据结构

海风林影 2939

进程IDLinux内核进程管理深入分析之进程ID

参考: https://www.cnblogs.com/hazir/p/linux_kernel_pid.html time : 2019.5.7 Linux 内核使用task_struct数据结构来关联所有与进程相关的数据和结构,Linux内核所有涉及到进程和程序的所有算法都是围绕该数据结构建立的,是内核中最重要的数据结构之一。该数据结构在内核文件include/linux/sched.h中...

qq_22613757的博客 1202

Linux内核进程管理之进程ID

进程ID简介 一个进程实体对应一个task_struct结构体,关于这个结构体后续的文章会有介绍,这里我们只需要知道通过该结构体我们可以获得该进程使用的所有资源信息。 进程ID思义就是进程ID,一个进程有四种类型的ID,分别是: PID:用于唯一标记一个进程 这句话在以前是完全无误的,但是现在还必须加上一个条件,那就是在一个命空间内唯一标记一个进程。关于命令空间,下一个章节会有介绍 ...

liuhangtiant的博客 819

Linux 获取当前运行程序的进程 id

ps axu | grep python 查看当前 Python 程序进程 ps axu | grep python root 1390 0.0 0.0 169356 8048 ? Ssl Jan18 0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers root 1632 0.0 0.0 185948 6908 ? Ssl Jan18 .

专注于AI领域前沿技术学习与分享:目标检测、图像修复、超分重建、AI工程化 3331

linux 查看进程id,Linux内核进程管理之进程ID

进程ID简介一个进程实体对应一个task_struct结构体,关于这个结构体后续的文章会有介绍,这里我们只需要知道通过该结构体我们可以获得该进程使用的所有资源信息。进程ID思义就是进程ID,一个进程有四种类型的ID,分别是:PID:用于唯一标记一个进程这句话在以前是完全无误的,但是现在还必须加上一个条件,那就是在一个命空间内唯一标记一个进程。关于命令空间,下一个章节会有介绍TGID:线程组...

weixin_42168230的博客 1096

Linux进程的管理与调度(三)--- Linux进程ID

Linux进程的管理与调度(三)--- Linux进程ID号一、进程ID概述1.1 进程ID类型(1) PID 内核唯一区分每个进程的标识 Linux 内核使用 task_struct 数据结构来关联所有与进程有关的数据和结构, Linux 内核所有涉及到进程和程序的所有算法都是围绕该数据结构建立的,是内核中最重要的数据结构之一。 该数据结构在内核文件include/linux/sched.h中定义,本篇文章只关注该数据结构如何来组织和管理进程ID的。 一、进程ID概述 1.1 进程ID类型 要想了解内

|~~~热爱生活、努力学习的小伙汁~~~| 1273

linux获取可执行文件进程ID

最近项目需要做应用管理,需要知道运行的应用称及其进程ID,用于监控程序的资源占用情况。         首先是获取可执行文件,需要用到readlink()函数,但是readlink获取的是可执行文件的绝对路径,需要用到strrchr()函数进行字符串处理,去掉路径,提取出可执行文件。 readlink()函数用法: strrchr()函数用法: 获取可执行文件函数代码如下:...

fangye945a的博客 3090

关于Linux进程你所需要知道的一切都在这里!!

非常详细的linux进程知识点!图文并茂

杰杰的博客 3037

linux下的线程ID进程ID

 在描述线程ID进程ID之前我们先来分清楚几个概念: 1. 用户级线程和内核级线程 什么是用户级线程? 用户级线程内核的切换由用户态程序自己控制内核切换,不需要内核干涉,少了进出内核态的消耗,但不能很好的利用多核Cpu,目前Linux pthread大体是这么做的。 什么是内核级线程? 切换由内核控制,当线程进行切换的时候,由用户态转化为内核态。切换完毕要从内核态返回用...

zhangye3017的博客 7154

linux 查看所有子进程id,技术|Linux 中 4 个简单的找出进程 ID(PID)的方法

每个人都知道 PID,究竟什么是 PID?为什么你想要 PID?你打算用 PID 做什么?你脑子里有同样的问题吗?如果是这样,你就找对地方了解这些细节了。我们查询 PID 主要是用来杀死一个没有响应的程序,它类似于 Windows 任务管理器一样。 Linux GUI 也提供相同的功能,但 CLI 是执行 kill 操作的有效方法。什么是进程 ID?PID 代表进程标识号process ident...

weixin_33344629的博客 3769
上一篇: C风格字符串基本操作
下一篇: 常量时间的栈操作(min/max)
notishell
博客等级 码龄15年 0粉丝 29原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值