当前位置: 首页 > article >正文

秒懂:进程相关的操作

 1.进程的查看

1.1创建test.cc文件,运行以下代码

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>


int main()
{
    while(1)
    {
      sleep(1);
    }
return 0;

}

1.2 执行以下命令

1. 运行test.cc文件 并将其最终的可执行文件命名为 test

gcc test.cc -o test

1.21. 查看进程

常见的 ps 命令用法包括:

  • ps:显示当前用户的正在运行的进程。
  • ps -ajx :ps -ajx 是一个常用的 Unix/Linux 命令,用于显示当前系统中所有进程的详细信息,并以完整的格式输出
  • ps -ajx | grep process_name:查找特定进程名的进程
 ps axj | head -1 && ps axj | grep test | grep -v grep

1.22查看结果展示:

 PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
23491 25318 25318 23491 pts/0    25318 S+    1000   0:00 ./test

2 进程属性的查看:

2.1创建test.cc文件,运行以下代码

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
   
    int ret = fork();
    if(ret < 0){
        perror("fork");
        return 1;
        }
    else if(ret == 0){ //child
        printf("I am child : %d!, ret: %d\n", getpid(), ret);
        }
        else{ //father
            printf("I am father : %d!, ret: %d\n", getpid(), ret);
        }
        sleep(1);
        return 0;
}

getgid() 函数是一个系统调用,用于获取调用进程的有效组 ID(Group ID)。在 Linux 中,每个进程都属于一个或多个组,getgid() 函数返回调用进程的有效组 ID。

其函数原型定义在 <unistd.h> 头文件中:

#include <unistd.h>

gid_t getgid(void);

其中,gid_t 是一个类型,通常是一个无符号整数类型,用于表示组 ID。

2.2 通过 /proc 系统文件夹看进程


在Linux系统中,/proc文件系统提供了关于运行中进程的详细信息。你可以通过查看/proc文件系统中的特定目录和文件来获取有关进程的信息。下面是一些你可以在/proc文件系统中找到的有关进程的信息:

1.proc/[PID]:这是一个以进程ID(PID)命名的目录,其中包含有关特定进程的详细信息。你可以使用命令 ls /proc/[PID] 来查看。

2.proc/[PID]/status:此文件包含有关进程的各种状态信息,例如进程ID、父进程ID、进程状态、内存使用情况等。你可以使用命令 cat /proc/[PID]/status 查看。

3.proc/[PID]/cmdline:此文件包含启动进程时使用的完整命令行参数。你可以使用命令 cat /proc/[PID]/cmdline 查看。

4.proc/[PID]/exe:这是一个符号链接,指向正在运行的进程的可执行文件。你可以使用命令 ls -l /proc/[PID]/exe 查看。

5.proc/[PID]/fd:这是一个目录,包含有关进程打开的所有文件描述符的信息。你可以使用命令 ls /proc/[PID]/fd 查看。
 

2.3 执行以下命令

2.31. 运行test.cc文件 并将其最终的可执行文件命名为 test

gcc test.cc -o test

2.32.运行结果:

2.33. 查看进程

 ps axj | head -1 && ps axj | grep test | grep -v grep

2.34.查看结果展示:


http://www.kler.cn/a/296723.html

相关文章:

  • MyBatis-MappedStatement什么时候生成?QueryWrapper如何做到动态生成了SQL?
  • Java 8 时间日期处理
  • WebRTC 代码实现详述
  • SpringCloud-03 LoadBalancer服务调用与负载均衡
  • 《深入解析 ESLint 配置:从零到精通》
  • 如何在Mac电脑上本地部署Stable Diffusion:详细教程(webUI)
  • mac上jmeter的安装和使用
  • 面试准备-7
  • PAT甲级-1029 Median
  • AndroidStudio清除重置Http Proxy代理的方式
  • 论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS
  • HRGraph: 利用大型语言模型(LLMs)构建基于信息传播的HR数据知识图谱与职位推荐
  • 3.创建型设计模式详解:生成器模式与原型模式的深度解析
  • 如何在VSCODE中查看西门子PLC的SCL程序?
  • 达梦数据库:dm与mysql语法差异(select)
  • CAP (C# Distributed Application Framework)
  • [Linux Kernel Block Layer第一篇] block layer架构设计
  • Spring Boot项目中如何解决循环依赖
  • 大模型构建合作性的Agent,多代理框架MetaGpt
  • QT 读取Excel表