社区
Linux/Unix社区
帖子详情
如何用C遍历unix/linux下的所有进程,取得PID,名称等等
toalexjin
2002-11-15 11:25:26
小弟要开发一些关于unix的程序,不知道如何用C遍历unix/linux下的所有进程,相当于shell里面的ps -ef,取得PID,名称等等,其实可以在C里面用打开管道的方式读取“ps -ef”,但不想这么做。
不清楚相关的系统函数是什么,非常感谢!
...全文
1703
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里面的相关函数是什么?
[Shell] [笔记]
UNIX
/
Linux
/OSX中的Shell编程
UNIX
/
Linux
/OSX中的Shell编程(第4版) Stephen G. Kochan Patrick Wood著 文章目录
UNIX
/
Linux
/OSX中的Shell编程(第4版)基础1. 使用文件2. 使用目录3. 文件名替换*? 或 [][!chars]4. 文件名中的空格5. 标准输入/输出和I/O重定向6. 标准错误7. 管道8. Shell9. 正则表达式10. 常用字符的八进制...
【安全】【
Linux
】通过/proc/
pid
/获取
进程
信息
proc/
pid
中包含了
进程
的许多信息,这些信息可以供用户查看,也可以供程序读取,程序可以从这里获取到
进程
的文件、网络等信息并进行分析,但是,频繁读取也可能影响业务性能。
Linux
使用C语言获取
进程
信息
在计算机的世界里,
Linux
进程
是一个非常基础而且关键的概念。它可以被理解为正在执行的一个程序的实例。每个
进程
都有自己独特的身份,我们称之为
进程
ID(
PID
),就像每个人都有自己的身份证号码一样。
Linux
操作系统是一种多任务操作系统,可以同时运行多个
进程
,就像一个杂技团队能同时上演多个节目一样。现在,想象一下
进程
是厨房里的一个厨师,而计算机资源(如CPU、内存)则是厨房里的炉子、锅碗瓢盆。每个厨师都需要这些资源来完成他们的烹饪任务。
linux
编程获取所有
进程
,
Linux
/
UNIX
编程:获取指定用户所有正在运行的
进程
ID和
进程
名...
先用系统函数 `getpwnam` 获得指定用户名的 UID,然后
遍历
/proc/ 中所有
PID
目录,如果 /proc/
PID
/status 中的 UID 是输入用户名对应的 UID 则输出该 status 文件中的
进程
名,
进程
ID就是目录名。#include #include #include #include #include #include #include #include in...
python使用psutil获取系统(Windows
Linux
)所有运行
进程
信息实战:CPU时间、内存使用量、内存占用率、
PID
、
名称
、创建时间等;
python使用psutil获取系统(Windows
Linux
)所有运行
进程
信息实战:CPU时间、内存使用量、内存占用率、
PID
、
名称
、创建时间等; psutil模块可以跨平台使用,支持
Linux
/
UNIX
/OSX/Windows等,它主要用来做系统监控,性能分析,
进程
管理等。 # 使用pip安装psutil包 pip install psutil # process_iter方法返回的是一个迭代器,其内容就是当前正在进行的所有
进程
的信息,例如、CPU时间、内存使用率、
名称
Linux/Unix社区
23,127
社区成员
74,510
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章