Linux系统和进程信息笔记

嵌入式技术

1368人已加入

描述

1、/proc 文件系统

/proc 是一个虚拟文件系统,包含了各种用于展示内核信息的文件,并且允许进程通过常规文件 IO 系统调用方便地读取,有时还可以修改这些信息。

之所以称 /proc  为虚拟文件系统,是因为其包含的文件和子目录不是存储于磁盘上的,而是由内核在进程访问此类信息时动态创建的。

Linux系统

1.1、获取进程的有关信息

每个进程,内核都会提供一个相应的目录 proc/PID,其中 PID 是进程的 ID,此目录的各种文件和子目录包含了进程的相关信息。

Linux系统

/proc/PID 目录下的文件节选:

Linux系统

/proc/PID/fd:为进程打开的每个文件描述符都包含一个符号链接,每个符号链接的名称都与描述符的数值相匹配

/proc/PID/task :提供线程目录,每个目录中包含的子目录 /proc/PID/task/TID,其中 TID 是线程 ID,即 gettid() 返回值。

1.2、/proc 目录下的系统信息

Linux系统

/proc :各种系统信息

/proc/net :有关网络和套接字的状态信息

/proc/sys/fs :文件系统相关设置

/proc/sys/kernel :各种常规的内核设置

/proc/sys/net :网络和套接字的设置

/proc/sys/vm :内存管理设置

/proc/sysvipc :有关 System V IPC 对象的信息

1.3、访问 /proc 文件

通常使用 shell 脚本来访问 /proc 目录下的文件:

 

echo 100000 > /proc/sys/kernel/pid_max
cat /proc/sys/kernel/pid_max

 

也可以在程序中使用常规 IO 系统调用来访问 /proc 目录下的文件:

/proc 目录下的一些文件是只读的,即这些文件仅用于显示内核信息,无法对其进行修改, /proc/PID 目录下的大多数文件就属于此种类型

/proc 目录下的一些文件仅能由文件拥有者或者特权级进程读取, /proc/PID 目录下的所有文件都是如此

除了  /proc/PID 子目录的文件, /proc 目录的其他文件大多属于 root  用户,并且也只能由 root 用户来修改这些文件

1.4、访问  /proc/PID 目录中的文件

/proc/PID 目录的内容变化不定,每个目录随着相应的进程 ID 的创建而生,又随着进程的终止而消灭。

2、系统标识

uname() 系统调用返回了一系列关于主机系统的标识信息,存储于 utsbuf 结构体中:

 

#include 

int uname(struct utsname *buf);

 

utsbuf :

 

struct utsname {
               char sysname[];    /* Operating system name (e.g., "Linux") */
               char nodename[];   /* Name within "some implementation-defined
                                     network" */
               char release[];    /* Operating system release (e.g., "2.6.28") */
               char version[];    /* Operating system version */
               char machine[];    /* Hardware identifier */
           #ifdef _GNU_SOURCE
               char domainname[]; /* NIS or YP domain name */
           #endif
           };

 

在 Linux 中这些字段的长度都是 65,其中包括了空字节终止符所占用的空间

sysname,release,version,machine 字段由内核自动设置

/proc/version 中也包含了这些信息

nodenmae 字段的返回值由 sethostname()  系统调用设置,gethostname() 则为反向操作,用于获取系统的主机名

domainname 字段的返回值由 setdomainname()  系统调用设置,getdomainname() 为反向操作,获取 NIS 域名

往期精彩

Linux静态库与共享库基础笔记

嵌入式Linux根文件系统构建指南

从零编写STM32H7的MDK SPI FLASH下载算法

移植 ubuntu core 16.04(ubuntu-base)到i.MX6ULL开发板

觉得本次分享的文章对您有帮助,随手点[在看]并转发分享,也是对我的支持。

原文标题:Linux系统和进程信息笔记

文章出处:【微信公众号:嵌入式应用研究院】欢迎添加关注!文章转载请注明出处。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分