linux系统编程之进程概念

1.什么是程序,什么是进程,有什么区别?

程序是静态的概念,gcc xxx.c -o pro,磁盘中生成pro文件,叫做程序。

进程是程序的一次运行活动,程序跑起来,系统就多了一个进程。

2.如何查看系统中的进程

ps指令,在乌班图先练ps -aux可以看到全部进程,搭配grep管道使用,grep就起到一个滤网的作用,过滤出我们想看到的进程,例ps -aux|grep init,这样只有init被过滤出来了。

ps -aux|grep init

3.Linux下任务管理器,top指令

在这里插入图片描述

4.什么是进程标识符?

每个进程都有一个非负整数表示的唯一ID,叫做pid,类似身份证。
函数getpid()可以获取自身的进程标识符,getppid()获取父进程的进程标识符。

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
        pid_t pid;
        pid = getpid();
        printf("my pid is %d\n", pid);
        while(1);
        return 0;
}

运行结果:

my pid is 28198

此时调用top指令就可以查看我们这个程序的运行状况。
在这里插入图片描述

5. 什么叫父进程,什么叫子进程

进程A创建了进程B,那么A叫做父进程,B叫做子进程,父子进程是相对的概念

6.C程序的存储空间是如何分配的

在这里插入图片描述

7.栈堆之类的概念

数据段:初始化的变量

非初始化数据段(bss段):函数外未被初始化的变量,

命令行参数和环境变量:argc,argv

栈:自动变量以及每次函数调用时所需保存的信息都存放在此段中,例如调用函数的地址保存在栈里,跳到函数里运行的时候,局部变量,自动变量,函数调用产生的信息都会保存在栈里。

堆:通常在堆中进行动态分配,堆位于非初始化数据段和栈之
间,例如malloc动态分配地址在堆里面。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值