社区
Linux/Unix社区
帖子详情
如何用C遍历unix/linux下的所有进程,取得PID,名称等等
toalexjin
2002-11-15 11:25:26
小弟要开发一些关于unix的程序,不知道如何用C遍历unix/linux下的所有进程,相当于shell里面的ps -ef,取得PID,名称等等,其实可以在C里面用打开管道的方式读取“ps -ef”,但不想这么做。
不清楚相关的系统函数是什么,非常感谢!
...全文
2001
10
打赏
收藏
如何用C遍历unix/linux下的所有进程,取得PID,名称等等
小弟要开发一些关于unix的程序,不知道如何用C遍历unix/linux下的所有进程,相当于shell里面的ps -ef,取得PID,名称等等,其实可以在C里面用打开管道的方式读取“ps -ef”,但不想这么做。 不清楚相关的系统函数是什么,非常感谢!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
toalexjin
2002-11-26
打赏
举报
回复
To dawndu(dawndu)
谢谢! 不过你的方法好象对付自己的进程可以的,而对于别人的进程,在open(...)会出错的,根本打不开.
我用的是compaq tru64 unix.
yanyanyan
2002-11-22
打赏
举报
回复
同意dawndu(dawndu)
dawndu
2002-11-22
打赏
举报
回复
在unix/linux中的/proc下有所有进程的信息。
#include<stdio.h>
#include<dirent.h>
#include<procfs.h>
DIR *pd;
int fd;
struct dirent *pdir;
struct prpsinfo procinfo;
char filename[255];
pd=opendir("/proc");
while((pdir=readdir(pd)!=NULL))
{
if(pdir->d_ino==0) continue;
strcpy(filename,"/proc/");
strcat(filename,pdir->d_name);
if((fd=open(filename,...)!=-1)
{
ioctl(fd,参数,procinfo);//参数到 procfs.h 中找
}
}
大概如此,抱歉,记得不是很清楚,每个系统也不尽相同
踏岸寻柳
2002-11-20
打赏
举报
回复
其实UNIX下有很多底层的东西都没有直接的实现方式的。
当然,可能是我还没有找到。
比如:进程、文件系统、硬件相关的
liuto
2002-11-17
打赏
举报
回复
这里:看最后一节
http://www.erlenstar.demon.co.uk/unix/faq_toc.html
liuto
2002-11-17
打赏
举报
回复
看一篇叫做《UNIX FAQ》的经典文章,里面有针对各种unix地解决方法
toalexjin
2002-11-16
打赏
举报
回复
To wgh166(面朝PC屏幕,背靠西子湖)
这种方法我知道的,但我想完全用C来实现,不想和shell搭上边,应该有比较直接的C的系统函数的,只是不知道.
blh
2002-11-15
打赏
举报
回复
linux下遍历/proc下所有以数字为名字的目录
牧牛人软件
2002-11-15
打赏
举报
回复
用管道:
通过fgets(buf, n, ptr)buf就可以得到命令“ps -ef"一样的信息,
读帮助”man popen":
char *cmd = "ps -ef";
FILE *ptr;
if ((ptr = popen(cmd, "r")) != NULL)
while (fgets(buf, n, ptr) != NULL)
(void) printf("%s ",buf);
UID PID PPID C STIME TTY TIME CMD
root 0 0 0 Sep-30 ? 00:00:01 sched
root 1 0 0 Sep-30 ? 00:00:06 /etc/init -a
root 2 0 0 Sep-30 ? 00:00:00 vhand
root 3 0 0 Sep-30 ? 00:00:27 bdflush
root 4 0 0 Sep-30 ? 00:00:00 kmdaemon
root 5 1 0 Sep-30 ? 00:00:50 htepi_daemon /
root 6 0 0 Sep-30 ? 00:00:00 strd
root 2941 1 0 Oct-08 tty01 00:00:00 /bin/login ccb
root 43 1 0 Oct-08 ? 00:00:02 /etc/syslogd
root 47 1 0 Oct-08 ? 00:00:00 /etc/ifor_pmd
root 48 47 0 Oct-08 ? 00:00:13 /etc/ifor_pmd
root 36 1 0 Oct-08 ? 00:00:00
toalexjin
2002-11-15
打赏
举报
回复
是有很多,而且和ps -ef的PID一样,那我想取得某个PID的相关信息,比如说名称,它实际的命令的名字,什么时候运行的一些信息,怎么办? C里面的相关函数是什么?
linux
编程获取所有
进程
,
Linux
/
UNIX
编程:获取指定用户所有正在运行的
进程
ID和
进程
名...
先用系统函数 `getpwnam` 获得指定用户名的 UID,然后
遍历
/proc/ 中所有
PID
目录,如果 /proc/
PID
/status 中的 UID 是输入用户名对应的 UID 则输出该 status 文件中的
进程
名,
进程
ID就是目录名。#include #include #include #include #include #include #include #include in...
Unix
_
Linux
_AIX_常用命令总结
■前言
Unix
,
Linux
介绍 https://blog.csdn.net/sxzlc/article/details/103652857(介绍内容在文章底部) ■各种命令 0.cd 目录跳转 1.uname uanme -a 显示服务器全部信息 uname -n 显示服务器名字 2.ifconfig ifconfig -a 查看网络配置 3.who 显示当前在线用户 4.chown ch...............
Linux
C语言实现
进程
心跳监控:基于UDS与timerfd的高可用守护方案
在
Linux
后台服务与分布式系统中,
进程
存活监控是保障服务可用性的基础机制。其核心原理是通过
进程
间通信(IPC)让被监控
进程
定期向监控端发送存活信号,监控端在超时未收到信号时判定
进程
异常并触发恢复流程,从而提升系统的容错与自愈能力。这一技术价值在于能有效检测
进程
僵死、卡死等操作系统无法自动处理的故障状态,广泛应用于微服务、数据库连接池、长连接服务等对可靠性要求高的场景。本文聚焦于使用C语言在
Linux
环境下实现一个轻量级、生产可用的
进程
心跳机制,详细剖析了如何利用
Unix
Domain Socket(UDS
Linux
进程
信号 [ 上 ]
就好比你在听到警报声后,根据之前制定的应急计划,迅速找到重要物品并按照预定路线撤离。这是一种经过提前规划和准备的应对方式。在
进程
里,开发者可以根据需求定义信号的处理逻辑,让
进程
在接收到信号时执行特定的操作,而不是简单地终止。
Linux
进程
概念
本文摘要: 程序运行前需从磁盘加载到内存,基于冯诺依曼体系的存储程序思想,CPU仅能执行内存中的指令。内存作为CPU与外设间的缓冲,减少等待时间以提升效率。多程序运行时,操作系统通过“先描述再组织”方式管理
进程
:内核用task_struct结构体描述
进程
属性(如标识、状态、优先级等),并通过内嵌链表组织所有
进程
。
Linux
采用list_head实现双向链表,通过偏移量计算从链表节点定位到完整的
进程
结构。
进程
管理本质是对内核数据结构的操作,确保资源合理分配与调度。
Linux/Unix社区
23,224
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章