HP-UX下获取进程信息的常用方法

作者:佚名 上传时间:2023-05-24 运行软件:C语言 软件版本:HP-UX 11i v3 版权申诉

在HP-UX操作系统中,获取进程信息是一项常见的操作,不同的情况需要采用不同的方法。本示例代码主要介绍了HP-UX下获取进程信息的常用方法,包括获取进程ID、进程名、进程状态等信息,并提供了对应的代码实现。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/procfs.h>
#include <fcntl.h>

#define BUFFER_SIZE 1024

/* 根据进程ID获取进程名 */
void get_process_name(int pid, char* process_name)
{
    char filename[BUFFER_SIZE];
    sprintf(filename, "/proc/%d/status", pid);
    FILE* fp = fopen(filename, "r");
    if (fp == NULL)
    {
        sprintf(process_name, "unknown");
        return;
    }
    char line[BUFFER_SIZE];
    while (fgets(line, BUFFER_SIZE, fp))
    {
        if (strncmp(line, "Name:", 5) == 0)
        {
            sscanf(line+6, "%s", process_name);
            break;
        }
    }
    fclose(fp);
}

/* 根据进程ID获取进程状态 */
int get_process_state(int pid)
{
    char filename[BUFFER_SIZE];
    sprintf(filename, "/proc/%d/status", pid);
    FILE* fp = fopen(filename, "r");
    if (fp == NULL)
    {
        return -1;
    }
    char line[BUFFER_SIZE];
    int state = 0;
    while (fgets(line, BUFFER_SIZE, fp))
    {
        if (strncmp(line, "State:", 6) == 0)
        {
            char state_char;
            sscanf(line+7, "%c", &state_char);
            switch (state_char)
            {
                case 'R':
                    state = 1;  // 运行状态
                    break;
                case 'S':
                    state = 2;  // 睡眠状态
                    break;
                case 'Z':
                    state = 3;  // 僵死状态
                    break;
                default:
                    state = 0;  // 其他状态
                    break;
            }
            break;
        }
    }
    fclose(fp);
    return state;
}

/* 根据进程名获取进程ID */
int get_process_id(const char* process_name)
{
    int pid = -1;
    DIR* dir = opendir("/proc");
    if (dir == NULL)
    {
        return -1;
    }
    struct dirent* dp;
    while ((dp = readdir(dir)) != NULL)
    {
        if (isdigit(dp->d_name[0]))
        {
            int cur_pid = atoi(dp->d_name);
            char cur_process_name[BUFFER_SIZE];
            get_process_name(cur_pid, cur_process_name);
            if (strcmp(cur_process_name, process_name) == 0)
            {
                pid = cur_pid;
                break;
            }
        }
    }
    closedir(dir);
    return pid;
}

int main()
{
    int pid = getpid();  // 获取当前进程ID
    char process_name[BUFFER_SIZE];
    get_process_name(pid, process_name);
    printf("当前进程名:%s\n", process_name);

    int state = get_process_state(pid);
    printf("当前进程状态:%d\n", state);

    pid = get_process_id("vim");
    printf("vim进程ID:%d\n", pid);

    return 0;
}

免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com

用户评论
相关推荐
HP-UX获取进程信息常用方法
在HP-UX操作系统中,获取进程信息是一项常见的操作,不同的情况需要采用不同的方法。本示例代码主要介绍了HP-UX下获取进程信息的常用方法,包括获取进程ID、进程名、进程状态等信息,并提供了对应的代码
HP-UX 11i v3
C语言
2023-05-24 11:59
HP-UX使用pstat_getproc()获取进程信息
介绍了HP-UX系统下使用pstat_getproc()函数获取进程信息的方法和实现方式,包括进程ID,父进程ID,进程状态等信息。#include <stdio.h>#include
HP-UX 11i v3
C语言
2023-03-22 06:07
使用Python在Windows获取进程信息方法
介绍如何使用Python在Windows下获取进程的PID、名称、CPU占用率等信息。使用了win32api和psutil库,通过调用系统接口获取信息。import win32apiimport
Python 3.7.9
2023-03-19 13:33
C#获取进程信息获取进程信息
C#进程管理源码,获取进程信息!!!!!!!!!!!!
RAR
0B
2020-05-29 18:14
Windows获取进程信息示例代码
介绍Windows平台下通过API函数获取进程相关信息的示例代码,展示了如何使用Windows API函数获取进程名称、PID等信息。#include <windows.h>#incl
Windows 10
Visual Studio 2019
2023-04-22 03:32
FreeBSD使用procfs获取进程信息
本示例代码展示了在FreeBSD系统下,如何使用procfs文件系统来获取进程的状态信息,包括进程ID、父进程ID、进程状态等。实现方式是使用C语言编写,通过读取/proc目录下的相关文件来获取进程信
FreeBSD 13.0
C语言
2023-03-18 03:27
HP-UX获取当前系统信息方法
本示例代码演示了在HP-UX系统中获取当前系统信息的方式,并使用打印函数输出。#include <stdio.h>#include <sys/utsname.h> //引入
HP-UX B.11.31
C语言
2023-04-05 07:23
使用HP-UX获取系统信息方法
该示例代码展示了如何使用HP-UX命令行工具获取系统信息。使用系统命令可以方便地获取硬件、网络、文件系统等重要信息,有助于管理员监控系统状态和故障排查。本示例展示了获取CPU和内存信息的方法。#!/
HP-UX B.11.31
HP-UX
2023-04-20 14:23
java获取进程信息
java通过sigar获取进程的相关信息,包含各个进程的PID、名称、CPU使用率、所占内存大小等
TXT
0B
2019-05-03 03:20
C#获取进程信息
C#获取进程的信息C#获取进程的信息C#获取进程的信息C#获取进程的信息C#获取进程的信息C#获取进程的信息
RAR
0B
2019-05-03 22:18