Linux进程调用详解:查看进程相关信息 (linux查看进程调用)
在Linux系统中,进程是操作系统中最重要的概念之一,它是系统资源分配和管理的基本单位。在Linux中,进程是在内核态下运行的一个程序,它包含了程序的执行代码、数据、堆栈等信息。在操作系统中,进程可看作是一个具有独立功能的单位,它有自己独立的运行状态和资源分配。为了更好地管理和优化进程,Linux提供了一系列的进程调用函数,可以帮助我们查看进程相关信息。
一、查看当前进程信息
1. getpid 函数
getpid 函数可以用来获取当前进程的 ID 号。
函数原型:pid_t getpid(void);
返回值:返回当前进程 ID 号
示例代码:
#include
#include
int mn()
{
pid_t pid = getpid();
printf(“当前进程ID号:%d\n”, pid);
return 0;
}
输出结果:
当前进程ID号:1234
2. getppid 函数
getppid 函数可以用来获取当前进程的父进程的 ID 号。
函数原型:pid_t getppid(void);
返回值:返回当前进程父进程 ID 号
示例代码:
#include
#include
int mn()
{
pid_t ppid = getppid();
printf(“当前进程父进程ID号:%d\n”, ppid);
return 0;
}
输出结果:
当前进程父进程ID号:5678
3. getuid 函数
getuid 函数可以用来获取当前进程的用户 ID。
函数原型:uid_t getuid(void);
返回值:返回当前进程用户 ID 号
示例代码:
#include
#include
int mn()
{
uid_t uid = getuid();
printf(“当前进程用户ID号:%d\n”, uid);
return 0;
}
输出结果:
当前进程用户ID号:1000
4. getgid 函数
getgid 函数可以用来获取当前进程的用户组 ID。
函数原型:gid_t getgid(void);
返回值:返回当前进程用户组 ID 号
示例代码:
#include
#include
int mn()
{
gid_t gid = getgid();
printf(“当前进程用户组ID号:%d\n”, gid);
return 0;
}
输出结果:
当前进程用户组ID号:1000
二、查看其他进程信息
1. getpgid 函数
getpgid 函数可以用来获取指定进程的进程组 ID。
函数原型:pid_t getpgid(pid_t pid);
参数 pid:进程 ID 号,用于获取指定进程的进程组 ID
返回值:返回进程组 ID 号
示例代码:
#include
#include
int mn()
{
pid_t pid = 1234; // 指定进程 ID 号
pid_t pgid = getpgid(pid);
printf(“进程组ID号:%d\n”, pgid);
return 0;
}
输出结果:
进程组ID号:4321
2. getpriority 函数
getpriority 函数可以用来获取指定进程的进程优先级。
函数原型:int getpriority(int which, int who);
参数 which:进程优先级类型,取值范围为常数 PRIO_PROCESS、PRIO_PGRP 和 PRIO_USER。
参数 who:进程、进程组或用户 ID 号。
返回值:返回指定进程优先级,失败返回 -1。
示例代码:
#include
#include
#include
int mn()
{
int which = PRIO_PROCESS;
pid_t pid = getpid(); // 获取当前进程 ID 号
int priority = getpriority(which, pid);
printf(“进程优先级:%d\n”, priority);
return 0;
}
输出结果:
进程优先级:0
3. getrlimit 函数
getrlimit 函数可以用来获取指定进程的资源限制。
函数原型:int getrlimit(int resource, struct rlimit *rlim);
参数 resource:需要获取限制信息的资源类型,如 RLIMIT_CORE 表示核心转储限制,RLIMIT_STACK 表示堆栈大小限制等。
参数 rlim:指向 rlimit 结构体的指针,用来存储获取到的资源限制值。
返回值:成功返回0,失败返回-1。
示例代码:
#include
#include
#include
int mn()
{
struct rlimit rlim;
int resource = RLIMIT_STACK; // 获取堆栈大小限制信息
if (getrlimit(resource, &rlim)
printf(“getrlimit error\n”);
return -1;
}
printf(“当前资源限制:%ld – %ld\n”, rlim.rlim_cur, rlim.rlim_max);
return 0;
}
输出结果:
当前资源限制:8388608 – 67108864