Linux系统中的进程与线程及常用命令

Linux 系统中的进程与线程

进程

进程是计算机中正在运行的程序的实例。每个进程都有自己独立的地址空间、内存、资源和执行状态。进程是操作系统进行资源管理和任务调度的基本单位。

进程的主要特征:
- 地址空间:每个进程有自己独立的虚拟地址空间。
- 资源:进程拥有自己的文件描述符、信号处理器等资源。
- 执行状态:进程的执行状态包括运行、等待、挂起等。

线程

线程是进程中的一个执行单元。线程共享进程的地址空间和资源,但有自己独立的栈、寄存器等。线程之间的切换比进程之间的切换开销更小,因此可以实现更高效的并发执行。

线程的主要特征:
- 共享资源:线程共享进程的内存和资源。
- 独立执行:每个线程有自己的执行路径。
- 轻量级:创建和管理线程的开销比进程小。

常用命令

`pstree -sp`

`pstree` 命令以树状图的形式显示进程及其子进程关系。`-s` 选项显示进程树的 PID 和 PPID,`-p` 选项显示 PID。

```bash
pstree -sp
 

输出示例:

init(1)─┬─bash(1234)───a.out(5678)
        └─bash(2345)
 

- `init(1)` 是系统的初始进程。
- `bash(1234)` 和 `bash(2345)` 是 `init` 进程的子进程。
- `a.out(5678)` 是 `bash(1234)` 启动的程序 `a.out`。

`ps aux | grep a.out`

`ps` 命令显示当前系统的进程状态。`aux` 选项表示显示所有用户的进程,`grep` 用于过滤包含 `a.out` 的进程。

```bash
ps aux | grep a.out
 

输出示例:

user     5678  0.0  0.1  12345  6789 ?        S    10:00   0:00 ./a.out
user     6789  0.0  0.0   2345   678 ?        S    10:01   0:00 grep --color=auto a.out
 

- 显示所有包含 `a.out` 的进程及其信息。
- 第一行是 `a.out` 程序的进程信息,第二行是 `grep` 命令本身的进程信息。

`ps -elf | grep a.out`

`ps -elf` 命令以长格式显示所有进程的详细信息。`grep` 用于过滤包含 `a.out` 的进程。

```bash
ps -elf | grep a.out
 

输出示例:

0 S 1234  5678  5678  0  80   0 0 0 0 ?        00:00:00 a.out
 

- `ps -elf` 显示的字段包括状态、PID、PPID、优先级、内存使用等信息。

进程状态

进程的状态通过 `ps` 命令中的 `STAT` 字段显示,常见的状态包括:

- R:Running(运行中)。进程正在运行或在等待 CPU 时间。
- S:Sleeping(睡眠中)。进程正在等待某个事件(例如 I/O 完成)。
- D:Uninterruptible Sleep(不可中断的睡眠)。进程在等待 I/O 操作,无法被中断。
- T:Stopped(停止)。进程已被停止,通常是由于接收到信号(例如 `SIGSTOP`)。
- Z:Zombie(僵尸)。进程已终止,但其父进程尚未读取其退出状态,因此仍然存在于系统中。

`getpid()` 函数

`getpid()` 是一个系统调用,用于获取当前进程的进程ID(PID)。它在 `<unistd.h>` 头文件中定义,返回当前进程的 PID,用于进程管理和调试。


#include <stdio.h>
#include <unistd.h>

int main() {
    pid_t pid = getpid();
    printf("Current PID: %d\n", pid);
    return 0;
}
 

总结

- 进程 和 线程 是系统管理和执行任务的基本单位。
- 使用 `pstree -sp`、`ps aux` 和 `ps -elf` 可以获取系统中进程的详细信息。
- 进程状态包括 `R`(运行)、`S`(睡眠)、`D`(不可中断的睡眠)、`T`(停止)和 `Z`(僵尸)。
- `getpid()` 用于获取当前进程的 PID。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值