Linux - 进程控制:进程创建、进程终止、进程等待及进程程序替换
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
// 示例函数:进程创建
pid_t create_process(const char *program, char *const argv[]) {
pid_t pid = fork();
if (pid == -1) {
perror("fork failed");
exit(EXIT_FAILURE);
} else if (pid == 0) {
if (execvp(program, argv) == -1) {
perror("execvp failed");
exit(EXIT_FAILURE);
}
}
return pid;
}
// 示例函数:进程终止
void terminate_process(int status) {
if (WIFEXITED(status)) {
printf("子进程正常结束,退出状态 %d\n", WEXITSTATUS(status));
} else {
printf("子进程异常结束\n");
}
}
// 示例函数:进程等待
void wait_for_process(pid_t pid) {
int status;
if (waitpid(pid, &status, 0) == -1) {
perror("waitpid failed");
exit(EXIT_FAILURE);
}
terminate_process(status);
}
// 示例函数:进程程序替换
void replace_process(const char *program, char *const argv[]) {
if (execvp(program, argv) == -1) {
perror("execvp failed");
exit(EXIT_FAILURE);
}
}
int main() {
// 创建子进程
char *argv[] = {"ps", "aux", NULL};
pid_t pid = create_process("ps", argv);
// 等待子进程结束
wait_for_process(pid);
// 程序替换:实际上会替换当前进程,不会创建新进程
argv[0] = "ls";
replace_process("ls", argv);
return 0;
}
这个示例代码展示了如何在Linux环境下使用C语言进行进程控制,包括创建进程、终止进程、等待进程和进程程序替换。在实际使用中,应该注意错误处理和资源管理,避免产生僵尸进程或者其他问题。
评论已关闭