在Linux中,我们可以使用fork()
来创建一个新的进程,exit()
来结束进程,wait()
或waitpid()
来等待一个子进程的结束。
- 创建一个新的进程:
#include <stdio.h>
#include <unistd.h>
int main() {
pid_t pid = fork();
if (pid == -1) {
// 创建失败
perror("fork failed");
return 1;
} else if (pid == 0) {
// 子进程中
printf("子进程PID: %d\n", getpid());
} else {
// 父进程中
printf("父进程PID: %d, 子进程PID: %d\n", getpid(), pid);
}
return 0;
}
- 结束进程:
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("退出前的输出\n");
exit(EXIT_SUCCESS); // 正常退出
// 或者使用 exit(EXIT_FAILURE); 非正常退出
printf("这行代码不会被执行\n"); // 这行代码不会被执行
return 0;
}
- 等待子进程结束:
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
int main() {
pid_t pid = fork();
if (pid == -1) {
perror("fork failed");
exit(EXIT_FAILURE);
}
if (pid == 0) {
// 子进程中
printf("子进程PID: %d, 正在执行\n", getpid());
sleep(5); // 模拟执行时间
exit(EXIT_SUCCESS);
} else {
// 父进程中
int status;
pid_t wpid = wait(&status); // 等待子进程结束
if (wpid == -1) {
perror("wait failed");
} else {
printf("子进程PID: %d 已经结束\n", wpid);
}
}
return 0;
}
以上代码展示了如何在Linux中创建一个新的进程,如何结束一个进程,以及如何等待一个子进程的结束。在实际应用中,这些基本的进程控制方法是非常有用的。