用C语言编写程序,模拟实现创建新的进程:查看运行进程;换出某个进程:杀死运行进程等功能
时间: 2024-10-19 18:11:20 浏览: 20
简单的c语言模拟进程管理实验
4星 · 用户满意度95%
在C语言中,我们可以使用POSIX线程库(pthread.h)来模拟创建、管理进程和线程的行为。以下是简化的示例代码,展示了如何实现一些基本功能:
1. 创建新进程(使用`fork()`函数):
```c
#include <stdio.h>
#include <unistd.h>
pid_t create_process(const char *command) {
pid_t pid = fork(); // 使用fork()创建子进程
if (pid == 0) { // 子进程
execlp(command, command, NULL); // 执行命令替换当前进程
perror("execlp failed");
exit(1);
}
return pid; // 父进程返回新进程ID
}
```
2. 查看运行进程(使用`ps`命令或系统API,这里简化为例):
```c
void list_processes() {
printf("List of running processes:\n");
// 实际上可以使用system("ps") 或者更底层的API获取进程信息,此处省略
}
```
3. 换出(挂起)进程(使用`sleep()`函数,实际应用可能需要更复杂机制):
```c
void suspend_process(pid_t pid) {
int status;
if (kill(pid, SIGSTOP) != 0) {
perror("Could not send SIGHUP to process");
}
waitpid(pid, &status, WUNTRACED); // 等待进程结束或恢复
}
```
4. 杀死进程(使用`kill()`函数,注意权限限制):
```c
void kill_process(pid_t pid) {
if (kill(pid, SIGKILL) != 0) {
perror("Failed to kill process");
}
}
```
阅读全文