如何用C遍历unixlinux下的所有进程,取得PID,名称等等

如何用C遍历unixlinux下的所有进程,取得PID,名称等等,第1张

用管道:

通过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 CSTIME TTYTIME 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 tty0100:00:00 /bin/login ccb

root43 1 0 Oct-08 ?00:00:02 /etc/syslogd

root47 1 0 Oct-08 ?00:00:00 /etc/ifor_pmd

root4847 0 Oct-08 ?00:00:13 /etc/ifor_pmd

root36 1 0 Oct-08 ?00:00:00

一、进程调度模块

Linux以进程作为系统资源分配的基本单位,并采用动态优先级的进程高级算法,保证各个进程使用处理机的合理性。进程调度模块主要是对进程使用的处理机进行管理和控制。

二、进程间通信模块

进程间通信主要用于控制不同进程之间在用户空间的同步、数据共享和交换。由于不同的用户进程拥有不同的进程空间,因此进程间的通信要借助于内核的中转来实现。一般情况下,当一个进程等待硬件 *** 作完成时,会被挂起。当硬件 *** 作完成,进程被恢复执行,而协调这个过程的就是进程间的通信机制。

进程间通信模块保证了Linux支持多种进程间通信机制,包括管道、命名管道、消息队列、信号量和共享内存等。

三、内存管理模块

Linux的内存管理模块采用先进的虚拟存储机制,实现对多进程的存储管理。它提供了十分可靠的存储保护措施,对进程赋予不同的权限,用户不能直接访问系统的程序和数据,保证了系统的安全性。同时,为每个用户进程分配一个相互独立的虚拟地址空间。

四、文件系统模块

Linux的文件系统模块采用先进的虚拟文件系统技术,屏蔽了各种文件系统的差别,为处理各种不同的文件系统提供了统一的接口,支持多种不同的物理文件系统达90多种。同时,Linux把各种硬件设备看作一种特殊的文件来处理,用管理文件的方法管理设备,非常方便、有效。

五、网络接口模块

Linux具有最强大的网络功能。网络接口模块通过套接字机制实现计算机之间的网络通信,并采用网络层次模型提供对多种网络协议和网络硬件设备的支持。

网络接口提供了对各种网络标准的实现和各种网络硬件的支持。网络接口一般分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。网络设备驱动程序则主要负责与硬件设备进行通信,每一种可能的网络硬件设备都有相应的设备驱动程序。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8519004.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存