【Linux系统编程】| 【09】/proc文件系统

1、/proc文件系统

UNIX提供了/proc虚拟文件系统,内核信息文件存于/proc文件目录下;
	该目录下的文件和子目录并未存储与磁盘上,由内核在进程访问此类信息时动态创建而成;

1.1 获取与进程有关的信息

【/proc/PID】:PID为进程;
【PID目录下的文件节选】:
	- cmdline:以\0分隔的命令行参数;
	- cwd:指向当前工作目录的符号链接;
	- Environ:NAME=value 键值对环境列表,以\0分隔;
	- exe:指向正在执行文件的符号链接;
	- fd:文件目录,包含了指向由进程打开文件的符号链接;
	- maps:内存映射;
	- mem:进程虚拟内存(在IO操作之前必须调用Iseek(移至有效偏移量);
	- mounts:进程的安装点;
	- root:指向根目录的符号链接;
	- status:各种信息(比如,进程ID、凭证、内存使用量、信号);
	- task:为进程中的每个线程均包含一个子目录;

1.2 /proc目录下的系统信息

/proc:各种系统信息;
/proc/net:有关网络和套接字的状态信息;
/proc/sys/fs:文件系统相关设置;
/proc/sys/kernel:各种常规的内核设置;
/proc/sys/net:网络和套接字的设置;
/proc/sys/vm:内存管理设置;
/proc/sysvipc:有关System V IPC对象的信息;

1.3 访问/proc文件

该目录下的文件,大多为只读,且文件拥有者为root;

2、系统标识

#include <sys/utsname.h>

int uname(struct utsname *utsbuf);
/**
@func: 返回值主机系统的标识信息,存储与utsbuf结构中;
*/

#define _UTSNAME_LENGTH 65
struct utsname {
	char sysname[_UTSNAME_LENGTH];
	char nodename[_UTSNAME_LENGTH];
	char release[_UTSNAME_LENGTH];
	char version[_UTSNAME_LENGTH];
	char mechine[_UTSNAME_LENGTH];
#ifdef _GNU_SOURCE
	char domainname[_UTSNAME_LENGTH];
#endif
};

【eg】: 
#include <iostream>
#include <sys/utsname.h>
#include "../Jxiepc/tlpi_hdr.h"

void test_uname() {
    struct utsname uts;

    if(uname(&uts) == -1) 
        errExit("name");
    cout << "Node name: " << uts.nodename << endl;
    cout << "System name: " << uts.sysname << endl;
    cout << "Release: " << uts.release << endl;
    cout << "Version: " << uts.version << endl;
    cout << "Machine: " << uts.machine << endl;

    cout << "Domain name: " << uts.domainname << endl;
}


int main(int argc, char* argv[])
{
    test_uname();

    return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jxiepc

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

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

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

打赏作者

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

抵扣说明:

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

余额充值