通过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具有最强大的网络功能。网络接口模块通过套接字机制实现计算机之间的网络通信,并采用网络层次模型提供对多种网络协议和网络硬件设备的支持。
网络接口提供了对各种网络标准的实现和各种网络硬件的支持。网络接口一般分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。网络设备驱动程序则主要负责与硬件设备进行通信,每一种可能的网络硬件设备都有相应的设备驱动程序。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)