社区
Linux/Unix社区
帖子详情
如何用C遍历unix/linux下的所有进程,取得PID,名称等等
toalexjin
2002-11-15 11:25:26
小弟要开发一些关于unix的程序,不知道如何用C遍历unix/linux下的所有进程,相当于shell里面的ps -ef,取得PID,名称等等,其实可以在C里面用打开管道的方式读取“ps -ef”,但不想这么做。
不清楚相关的系统函数是什么,非常感谢!
...全文
1860
10
打赏
收藏
如何用C遍历unix/linux下的所有进程,取得PID,名称等等
小弟要开发一些关于unix的程序,不知道如何用C遍历unix/linux下的所有进程,相当于shell里面的ps -ef,取得PID,名称等等,其实可以在C里面用打开管道的方式读取“ps -ef”,但不想这么做。 不清楚相关的系统函数是什么,非常感谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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里面的相关函数是什么?
c++实现
进程
列表c++实现
进程
列表
c++实现
进程
列表c++实现
进程
列表c++实现
进程
列表c++实现
进程
列表
从系统
进程
列表中根据
进程
名称
查找指定
进程
及其模块
根据
名称
查找指定的
进程
,并获取该
进程
的相关信息,如
进程
id; 原理:通过提权,利用系统
进程
列表快照和
进程
快照,枚举
进程
并与指定的名字进行匹配,从而获取该
进程
的相关信息。
打印、
进程
、关闭指定、获取当前系统
调用指定文档的系统打印功能/关闭指定的正在运行的程序/获取当前系统正在运行的程序 获取系统指定
进程
信息/获取指定系统
进程
的模块信息/获取指定系统
进程
的线程信息
Linux
操作系统
进程
管理学习教案.pptx
Linux
操作系统
进程
管理学习教案.pptx
linux
ps命令源码
linux
ps命令的源码;其实就是
遍历
/proc目录;供参考。
Linux/Unix社区
23,217
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章