linux,用C语言编程创建进程,并显示进程信息
时间: 2024-12-16 18:22:32 浏览: 12
在Linux系统下,C语言可以利用`fork()`和`exec()`函数来创建新的进程。以下是简单的步骤:
1. **创建新进程**:
使用`fork()`函数创建一个新的进程。如果调用成功,返回值大于0的是父进程的PID,等于0的是子进程的PID(实际上是一个负数),小于0表示错误。
```c
#include <unistd.h>
pid_t child_pid = fork();
```
2. **父进程处理**:
父进程可以继续执行其他任务,或者可以选择等待子进程结束。
```c
if (child_pid > 0) {
// 父进程
printf("Parent process created a child with PID %d\n", child_pid);
wait(NULL); // 等待子进程结束
} else if (child_pid == 0) {
// 子进程
} else {
perror("Fork failed");
exit(EXIT_FAILURE);
}
```
3. **子进程执行**:
子进程中通常会通过`execl()`系列函数(如`execlp()`, `execlpe()`, 等)替换当前进程的执行环境,比如执行一个命令。这里我们仅作展示,通常会加载可执行文件。
```c
// 子进程示例,执行ls命令
execlp("/bin/ls", "ls", NULL);
```
4. **显示进程信息**:
可以使用`ps`, `pidof`, 或者`getppid()`等系统调用来获取和显示进程信息。例如,父进程可以用`wait()`配合`waitinfo()`结构来获取子进程的退出状态。
```c
struct rusage usage;
int status;
wait(&usage);
WEXITSTATUS(status); // 获取子进程的退出状态码
printf("Child process %d exited with status %d\n", child_pid, WEXITSTATUS(status));
```
阅读全文