Linux应用编程---1.线程与进程

Linux应用编程—1.线程与进程

1 重要概念

1.1 程序

​ 程序指的是还没有运行起来的源代码,比如电脑上安装的“Keil MDK”、“Xshell”等等。

1.2 进程

​ Win10环境下,打开任务管理器,能看到有“进程”一栏,点击进去能看到5个应用以及132个后台进程。光看5个应用进程的话,正是正在运行着的程序。所以进程就是正在运行着的程序。

image-20221104090132376

图1 任务管理器中的进程

1.3 线程

​ 线程(thread)是操作系统进行调度的最小单位。一个进程可以并发多个线程,每个线程可以执行不同的任务。同一个进程的多个线程共享该进程中的全部系统资源,但每个线程有各自的调用栈、寄存器组以及线程本地存储。

1.4 任务

​ CPU具体要做的事情。

2 Linux

​ 在linux系统下,每一个进程都有自己的id号,查看这个id号也有linux系统提供给我们的库函数来实现。通常这个进程的id号被叫做“pid”,指的是“process id”。

2.1 Linux下查看进程id

2.1.1 终端下执行man getpid

image-20221104094159240

图2 Linux下执行man getpid指令

​ 可以看到调用该函数时需要包含的头文件,以及函数的描述。

2.1.2 getpid()
pid_t getpid(voiud);

​ 该函数用来返回id的进程号,无须入参,返回值是一个自建类型pid_t。还能看到一个函数:

pid_t getppid(void);

​ 阅读函数描述可以知道,该函数用来返回进程的父进程的id号,同样不需要入参以及返回一个pid_t的自建类型。知道了两个函数,现在编程来查看进程id号。

2.2 编程

2.2.1 源码实现
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>

int main(void)
{
        pid_t pid;
        pid_t pid_1;

        while(1)
        {
                pid = getpid();			// get process id
                printf("pid = %d.\n", pid);
                pid_1 = getppid();		// get parent process id
                printf("pid_1 = %d.\n", pid_1);
                printf("Hello World!\n");
                sleep(1);
        }

        return 0;
}

运行结果:

pid = 12913.
pid_1 = 2113.
Hello World!

每隔1秒钟打印一次~

image-20221104104148590

图3 运行结果,每秒打印一次进程id与父进程id
2.2.2 进程树

​ 新建一个终端,在命令行输入“man pstree”。

image-20221104104835351

图4 pstree指令

​ 以树的方式显示进程。输入pstree -p,在如下树中,根据之前代码打印的id号可以找到。可以看到./a.out的进程号为12913。

image-20221104104052709

图5 进程树

3 总结

​ Linux应用编程中线程与进程是两个非常重要的概念,本次我们先熟悉了如何查看进程id号以及父进程id号两个函数。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值