用c语言写一个查看全部进程的程序
时间: 2024-11-12 10:33:52 浏览: 9
在C语言中,编写一个查看所有进程的程序通常会涉及到系统调用,特别是`psutil`库在Linux环境下是一个不错的选择,因为它可以方便地获取系统信息。然而,标准C库并没有直接提供这样的功能。下面是一个简单的示例,展示了如何使用`fork()`、`execvp()`以及一些基本的系统函数来列出当前终端下运行的所有进程。请注意,这只是一个基础版本,并非完全精确的实时进程列表,因为实际操作可能需要root权限:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>
void list_processes() {
pid_t pid;
char *args[] = {"ps", "-ef", NULL};
while ((pid = fork()) > 0) { // 创建子进程
wait(NULL); // 等待子进程结束
}
if (pid == 0) { // 子进程
execvp(args[0], args); // 执行"ps -ef"
perror("Failed to execute ps");
exit(1);
} else {
printf("Parent process %d waiting for child.\n", getpid());
}
}
int main() {
list_processes();
return 0;
}
```
这个程序首先创建一个新的子进程,然后父进程等待子进程结束。子进程通过`execvp`替换自身并执行`ps -ef`命令,该命令将显示所有终端下的进程。
阅读全文