Linux下ps命令实现

2023-10-26

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#include <fcntl.h>
#define MAX 1024
#define PATH_SIZE 128
int main(void)
{
	DIR *dir;
	struct dirent *entry;
	FILE *fp;
	char path[PATH_SIZE];
	char buf[MAX];
	printf("NAME\t\tPID\n"); /* 输出表头 */
	if((dir = opendir( "/proc" )) == NULL ) { /* 打开/proc目录 */
		perror("fail to open dir");
			return -1; 
	}
	while((entry = readdir( dir ) ) != NULL){
		if(entry->d_name[0] == '.') /* 跳过当前目录,proc目录没有父目录 */ 
			continue;
		/* 跳过系统信息目录,所有进程的目录全都是数字,而系统信息目录全都不是数字 */
		if( (entry->d_name[0] <='0' ) || (entry->d_name[0] >= '9'))
			continue;
		/* 使用sprintf完成拼接路径,其中两个%s会由entry->d_name表示的进程ID替
		代 */
		sprintf(path, "/proc/%s/task/%s/status", entry->d_name,entry->d_name);
		fp = fopen(path, "r"); /* 打开文件 */
		if(fp == NULL){
			perror("fail to open");
			exit(1);
		}
		while(fgets(buf, MAX, fp) != NULL){ /* 读取每一行 */
			if(buf[0] == 'N'
 			&& buf[1] == 'a'
			&& buf[2] == 'm'
			&& buf[3] == 'e')
			{
				int i=6;
				while(buf[i]!='\n')
				{
					printf("%c", buf[i]); /* 跳过‘\t’,输出状态信息 */
					i++;
				}
			}
			if(buf[0] == 'P'
			&& buf[1] == 'i'
			&& buf[2] == 'd'){
				printf("\t\t%s", &buf[5]); /* 输出PID后就结束循环 */
				break;
			}
		}
		fclose(fp); /* 关闭stattus文件 */
	}
	closedir( dir ); /* 关闭目录 */
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux下ps命令实现 的相关文章

  • Linux下ps命令实现

    include
  • debian系统配置ip地址

    在Debian中网卡的设置可以通过 etc network interfaces文件来进行 具体可分为三种不同的配置方式 DHCP自动获取 静态分配IP地址和PPPoE宽带拨号 具体设置如下 在进行配置之前 首先进入 etc network
  • 深度优先遍历目录

    磁盘文件系统类型 ext2 ext3 ext4 深度优先遍历目录 include
  • C语言libcurl库的使用

    C语言libcurl库的安装与使用 curl库的作用是访问http和HTTPS网站 HTTPS加密的网站 在linux和树莓派都可以 把curl 7 71 1 tar bz文件复制到linux的工作目录 home lth mkdir htt
  • Linux进程同步机制-Futex

    引子 在编译2 6内核的时候 你会在编译选项中看到 Enable futex support这一项 上网查 有的资料会告诉你 不选这个内核不一定能正确的运行使用glibc的程序 那futex是什么 和glibc又有什么关系呢 futex诞生
  • Linux TCP客户端、服务器编程模型及实例

    Linux TCP客户端 服务器编程模型及实例 服务器模型 1 绑定IPv4的地址 INADDR ANY 和端口号 8888 int listenfd sockfd opt 1 struct sockaddr in server clien
  • EPICS asynPortDriver中数组用法示例

    本驱动程序是继承自asynPortDriver 分别重写了用于读取32位整型数组和32位浮点型数组的 readInt32Array和readFloat32Array 1 源代码如下 arraydriver h include epicsEv
  • DWORD类型

    DWORD 类型基本相关 DWORD 宏定义 typedef unsigned long DWORD 1 要使用DWORD要添加头文件
  • linux读取触摸屏事件数据

    对于有触摸设备的电脑或者手机 通过cat proc bus input devices应该就能够看到触摸设备的相关信息 比如 cat proc bus input devices I Bus 0013 Vendor 0x0012 Produ
  • C语言实现成语接龙完整版

    C语言实现成语接龙报告完整版 代码在最后面 实验报告书 实验名称 成语接龙人机对战游戏 摘要 成语接龙是中华民族传统的文字游戏 它有着悠久的历史 也有广泛的社会基础 是老少皆宜的民间文化娱乐活动 同时成语又是体现我国文字 文化 文明的一个缩
  • LRC歌词解析,实现Linux设备播放音乐显示歌词 LRC解析

    开始正文 1 关于LRC lrc是英文lyric 歌词 的缩写 被用做歌词文件的扩展名 以lrc为扩展名的歌词文件可以在各类数码播放器中同步显示 LRC 歌词是一种包含着 形式的 标签 tag 的 基于纯文本的歌词专用格式 最早由郭祥祥先生
  • linux下添加cmath库

    在Terminal下输入g sqrt c lm即可
  • VMware Workstation Pro 17 虚拟机安装Ubuntu18.4.06

    VMware Workstation Pro 17 虚拟机安装Ubuntu18 4 06 1 下载Ubuntu镜像文件 2 安装VMware Workstation Pro 17 3 使用VMware创建虚拟机 4 安装Ubuntu18 4
  • Linux C编程基础:获取时间

    1 前言 对于linux下的编程 无论是用户态还是内核态 时间获取都是经常需要使用到的 以下分别从用户态和内核态整理了几个常用的时间获取接口 供编写代码时快速查阅 linux时间子系统的发展历史及详细介绍 可以参考 深入理解Linux时间子
  • xdg-open 未找到命令

    安装 apt get install xdg utils root kylinos xdg open bash xdg open 未找到命令 root kylinos apt get install xdg utils 正在读取软件包列表
  • gdb调试心得体会

    gdb调试心得体会 首先进入gdb 调试二进制程序 gdb msgsvr dev 然后 运行 run 然后coredump了 输入bt查看调用栈 bt 然后查看函数栈 f 进入到指定的函数 然后查看具体行数 l number 然后break
  • GCC、头文件查找顺序总结

    GCC笔记 The History of GCC 1984年 Richard Stallman发起了自由软件运动 GNU Gnu s Not Unix 项目应运而生 3年后 最初版 的GCC横空出世 成为第一款可移植 可优化 支持ANSI
  • sbrk/brk函数用法

    头文件unistd h sbrk brk函数重新指定数据段的结束位置 sbrk 0 获得当前数据段结束地址 sbrk 增量 增量可正 可负 可为0 都返回原来数据段的结束地址 失败返回 1 brk 地址 返回0或 1 通过重新指定数据段新的
  • Linux环境变量执行顺序

    环境变量执行顺序 etc profile etc profile d sh bash profile bashrc etc bashrc
  • unistd.h中定义的setsid()与fork()

    setsid 是一个UNIX系统调用 用于创建一个新的会话 session 并将当前进程设置为该会话的领头进程 session leader 通常情况下 setsid 函数用于创建守护进程 daemon 以确保它与任何终端分离 从而可以在后

随机推荐

  • valn的基础配置

    vlan作业 1 交换机进行vlan配置 lsw1 lsw2 2 进行单臂路由的配置 3 DHCP配置 地址池的配置 端口启动
  • LR-ASPP论文

    论文地址 https arxiv org abs 1905 02244 摘要 我们提出了基于互补搜索技术的组合以及一个新颖的架构设计的下一代移动网络 MobileNetV3通过结合NetAdapt算法补充的硬件网络架构搜索 NAS 调整到移
  • 配置JAVA环境变量

    一 自行安装JDK 位置默认C盘 JDK全称是Java Development Kit 是整个Java的核心 包括了Java运行环境 Java工具和Java基础类库 JDK 是整个Java的核心 包括了Java运行环境 Java工具和Jav
  • 一文读懂 QUIC 协议:更快、更稳、更高效的网络通信

    作者 李龙彦 来源 infoQ 你是否也有这样的困扰 打开 APP 巨耗时 刷剧一直在缓冲 追热搜打不开页面 信号稍微差点就直接加载失败 如果有一个协议能让你的上网速度 在不需要任何修改的情况下就能提升 20 特别是网络差的环境下能够提升
  • 万得Wind量化与东方财富Choice量化接口使用

    接口需要付费 这里接口的付费和配置就不展开了 wind相对容易配置 直接用软件就可以点击并配置 东财请参考 Mac使用Python接入东方财富量化接口Choice 调试与获取数据 但有一点需要注意 wind使用量化接口的时候wind终端需要
  • 王炸功能ChatGPT 联网插件功能放开,视频文章一键变思维导图

    就在上周5月13日 Open AI 发文称 我们将在下周向所有ChatGPT Plus 用户开放联网功能和众多插件 这意味着什么 首先联网功能将使得ChatGPT不再局限于回答2021年9月之前的信息 能直接联网查询最新消息 而插件功能就可
  • BIOS启动过程详解

    BIOS 工作原理 最近几天在看 UNIX 操作系统设计 突然想到计算机是如何启动的呢 那就得从 BIOS 说起 其实这个冬冬早已是 n 多人写过的了 今天就以自己的理解来写写 权当一个学习笔记 一 预备知识 很多人将 BIOS 与 CMO
  • 19.3剪裁

    1 在固定管线中 裁剪是在世界坐标系中 2 在可编程管线中 裁剪是在规格化坐标系中 步骤 1 按照法向量和空间点定义裁剪平面 并归一化 2 根据世界观察投影变换矩阵相乘 求逆转置 即为需要的变换矩阵 3 变换矩阵与裁剪平面变换后就是需要的裁
  • numpy模块(2)

    1 利用布尔值来取元素 import numpy as np mask np array 1 0 1 dtype bool 1表示取对应的元素 0表示不取 arr np array 1 2 3 4 5 6 7 8 9 print arr m
  • Hadoop学习心得---二

    大数据运算解决方案MapReduce Hadoop的分布式计算模型MapReduce 最早是Google提出的 主要用于搜索领域 解决海量数据的计算问题 MapReduce有两个阶段组成 Map和Reduce 用户只需实现map 和redu
  • Three.js(学习)

    在vue项目中使用Three js的流程 1 首先利用npm安装Q three js 具体操作代码如下 npm install three 2 接下来利用npm安装轨道控件插件 npm install three orbit control
  • 表、栈和队列

    表 栈和队列 表 增强的for循环 List
  • DM6437 C64X+ EDMA 疑惑总结记录

    总结一下DM6437中的EDMA的使用出现的问题 方便以后再开发定位问题 1 EDMA Link 和 Chain的区别 link实现了DMA的自动重加载 非静态模式 需要两个param chain是不更新param set表 直接event
  • qt界面叠加视频OSD双层显示

    最终代码存放于 http download csdn net detail lzh445096 8849147 本人负责的是UI界面 提供给底层应用程序接口函数 此接口函数功能为向指定路径的文件中写入命令字符 应用程序去到该文件中读取到相应
  • 基于Protobuf协议的Dubbo与SpringBoot的结合

    文章目录 工程概况 父pom dubbo provider 通过proto3定义服务 打包发布服务 dubbo provider service实现服务 dubbo provider web提供服务 dubbo consumer dubbo
  • 依赖注入和控制反转的理解,写的太好了

    学习过Spring框架的人一定都会听过Spring的IoC 控制反转 DI 依赖注入 这两个概念 对于初学Spring的人来说 总觉得IoC DI这两个概念是模糊不清的 是很难理解的 今天和大家分享网上的一些技术大牛们对Spring框架的I
  • 互联网产品运作模式详解

    互联网产品运作模式详解 https www infoq cn article 3EVku39xVhJYs7ba9uk7 本文主要总结下移动互联网产品的市场运作模式 因为本身我是技术出身 对运作模式中的开发体系这 块相对熟悉 但是其他阶段也是
  • js: for in 循环对象

    var peopleObj man 2 2 2 woman 1 1 1 womanDoctor 100 100 100 for const prop in peopleObj if peopleObj hasOwnProperty prop
  • java将图片转为base64后出现的一些问题

    因为需要对接第三方接口 需要将图片转换为base64编码传参 手动转换base64使用postman完全是OK的 结果java中转换出来死活不行 p 将文件转成base64 字符串 p param path 文件路径 return thro
  • Linux下ps命令实现

    include