Linux系统编程——进程基本知识

news2024/12/23 9:39:19

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

  • 程序:程序是已经创建好的进程,此时并未进行运行,表现为静态
windows存储在硬盘中的可执行文件
Linux代码文件的编译但未运行,如gcc xxx.c -o pro
  • 进程:进程是正在运行的程序实例。进程是程序的一次运行活动,意思是程序跑起来了,系统中就多了一个进程。

2.如何查看系统中有哪些进程?

A、ps指令

显示全部进程,格式为ps -aux

显示部分进程,需要搭配grep指令(文件查找),格式为ps -aux|grep+搜索的文件名称

ps -aux|grep init//显示关于init的进程

B.top指令

top指令类似于windows的文件管理器,可用来查看文件的运行情况、cpu占用大小等,且数值是动态改变的,通常用它来评估程序设计。

3.什么是进程标识符(pid)和父进程标识符(ppid)?

A.进程标识符

与文件标识符fd类似:每一个进程都有一个非负整数标志的唯一ID,叫做pid,类似于身份证。
PID是程序被操作系统加载到内存成为进程后动态分配的资源,每次程序执行的时候,操作系统都会重新加载,PID在每次加载的时候都是不同的。
Pid=0::交换进程(swapper)作用——进程调度(例:多程序运行时谁作为主程序)
Pid=1: init进程,作用—系统初始化(例:开机界面)

B.父进程标识符

PPID与PID一样都是非零整数                                                                                                            一个进程创建的另一个新进程称为子进程。相反地,创建子进程的进程称为父进程

编程调用getpid函数获取自身的进程标识符getppid获取父进程的进程标识符

两者需要调用的函数原型如下:

pid_t getpid(void);
pid_t getppid(void);

调用该函数时需包含以下头文件

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

示例:

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

int main()
{
	pid_t pid;
	pid_t ppid;

	pid = getpid();
	ppid = getppid();

	printf("pid = %d\n",pid);
	printf("ppid = %d\n",ppid);

	return 0;
}

4.什么是父进程,什么是子进程?

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

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

对分配空间进行解读:

  • 正文段:这是由CPU执行的机器指令部分。通常,正文段是可共享的,所以即使是频繁执行的程序(如文本编辑器、C编译器和shel1等) 在存储器中也只需有一个副本,另外正文段常常是只读的,以防止程序由于意外而修改其自身的指令。
  • 初始化数据段:通常将此段称为数据段,它包含了程序中需明确地赋初值的变量。例如,C程序中出现在任何函数之外的声明使此变量带有其初值存放在初始化数据段中。
    int A = 99;
  • 非初始化数据段。通常将此段称为bss段,这一名称来源于一个早期的汇编运算符,意思是“block started by symbol”(由符号开始的块),在程序开始执行之前,内核将此段中的数据初始化为0或空指针。出现在任何函数外的C声明,使此变量存放在非初始化数据段中。
    int b[128];
  • 栈。自动变量以及每次函数调用时所需保存的信息都存放在此段中。每次调用函数时其返回地址以及调用者的环境信息(例如某些机器寄存器的值)都存放在栈中。然后最近被调用的函数在栈上为其自动和临时变量分配存储空间。通过以这种方式使用栈可以递归调用C函数。递归函数每次调用自身时,就使用一个新的栈帧,因此一个函数调用实例中的变量集不会影响另一个函数调用实例中的变量。
    void getNum()
    {
        
    }
  • 堆。通常在堆中进行动态存储分配。由于历史上形成的惯例,堆位于非初始化数据段和栈之间。(malloc函数在堆中申请 开辟内存空间)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1207406.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux DMA设备驱动详解

一&#xff0c;DMA相关定义&#xff08;fpga、wait_queue 、device、interrupt、 dma_request_channel 函数、dma_start_transfer函数、poll、read&#xff0c;platform总线&#xff09; DMA (直接内存读写)是Direct Memory Access的缩写&#xff0c;也就是内存到内存&#xf…

Java开源工具库使用之线上监控诊断库Arthas

文章目录 前言一、介绍1.1 功能1.2 原理 二、安装使用2.1 下载2.2 使用 三、常用3.1 实时查看3.2 追踪查看3.3 辅助命令3.4 热更新3.5 监控 四、实战4.1 CPU/内存占用过高4.2 接口耗时高4.3 找到类所在jar4.4 查找类的实例4.5 生成火焰图 参考 前言 在现代软件开发中&#xff…

如何利用ChatGPT撰写学术论文?

在阅读全文前请注意&#xff0c;本文是利用ChatGPT“辅助完成”而不是“帮写”学术论文&#xff0c;请一定要注意学术规范&#xff01; 本文我将介绍如何使用清晰准确的“指令”让ChatGPT帮助我们在论文写作上提高效率&#xff0c;希望通过本文的指导&#xff0c;读者能够充分…

OpenCV入门——概述 || 环境搭建

文章目录 OpenCV与图形学的关系OpenCV与FFmpeg的关系博客内容概览计算机视觉的应用OpenCV简介环境搭建 OpenCV与图形学的关系 从图形中理解其内容&#xff0c;是计算机视觉的任务&#xff1b;通过模型渲染出图像&#xff0c;是图形学的任务。 OpenCV与FFmpeg的关系 博客内容概…

Android开发入门课

设备环境搭建 1. 安装模拟器 雷电模拟器官网 : https://www.ldmnq.com/?n=6000 注:选择一个喜欢的版本安装即可,建议安装3版本、自带系统为安卓7以下。 不过雷电没有mac版本,需要mac版本的模拟器,可以使用夜神模拟器: Mac版本更新信息 | 夜神模拟器帮助中心 2. 安装…

万万没想到,金融人都在考的CFA和CPA在中国人民大学与加拿大女王大学金融硕士的用途这么大?

CFA和CPA是金融行业中两个非常重要的专业认证。它们分别代表了不同的职业方向和技能要求&#xff0c;对于想要在金融行业发展的人来说&#xff0c;拥有这两个认证之一或者两者都具备是非常有帮助的。听说拥有CFA和CPA在中国人民大学与加拿大女王大学金融硕士的用途也很大&#…

基于SPI+DMA方式的ws2812b氛围灯控制

好处&#xff1a;相比于gpio控制&#xff0c;可以大大节省CPU的时间&#xff0c;CPU只要将要传输的数据计算好放入内存中&#xff0c;然后发动DMA传输即可&#xff0c;后续整个过程并不需要CPU干预&#xff0c;CPU可以用于做其他的事情。特别是某些带蓝牙的芯片&#xff0c;需要…

【移远QuecPython】EC800M物联网开发板的MQTT协议腾讯云数据上报

【移远QuecPython】EC800M物联网开发板的MQTT协议腾讯云数据上报 文章目录 导入库初始化设置MQTT注册回调订阅发布功能开启服务发送消息函数打包调用测试效果附录&#xff1a;列表的赋值类型和py打包列表赋值BUG复现代码改进优化总结 py打包 导入库 from TenCentYun import TX…

MongoDB的简单使用

Linux安装MongoDB-CSDN博客 简单使用 /usr/local/mongodb/bin/mongod -f /mongodb/single/mongod.conf 启动 新建数据库 test MongoDB里 db.createCollection("books") 创建名为books的集合 好比表 db.getCollection(books).find({}) 查询所有 db.books.sa…

【go】报错整理与解决

文章目录 依赖下载失败checksum mismatch启动报错missing go.sum 依赖下载失败checksum mismatch > go get github.com/hibiken/asynqmon go: downloading github.com/hibiken/asynqmon v0.7.2 go: github.com/hibiken/asynqmonv0.7.2: verifying module: checksum mismatc…

QGIS之十六过滤器选择要素导出

效果 步骤 1、准备数据 下面这份数据是中国范围内的市级行政区划范围 2、打开表格 3、选择要素 方法1 从图上能看到选中的图形 方法2 4、导出

批量重命名软件推荐 A Better Finder Rename 12最新 for mac

A Better Finder Rename的大量重命名选项被组织成15个直观的类别&#xff0c;涵盖了一个伟大的文件重命名器所期望的所有文本&#xff0c;字符&#xff0c;位置&#xff0c;转换和截断功能。 除此之外&#xff0c;A Better Finder Rename提供了更多高级功能&#xff0c;可以满…

VMware 虚拟机开启后黑屏问题的解决方式

很好&#xff0c;现在是vm 虚拟机节目的连续剧了 首先&#xff0c;我们安装好了&#xff0c;vm软件。 其次&#xff0c;我们在vm中创建了虚拟机。 再其次&#xff0c;我们解决了&#xff0c;开启虚拟机计算机自动重启的问题。 最后我们遇到了这个问题&#xff1a;虚拟机开启后整…

独立站邮件营销大佬,手把手教你如何做好!

做独立站邮件营销的方式&#xff1f;独立站怎么做邮件营销&#xff1f; 邮件营销&#xff0c;作为独立站营销的重要手段之一&#xff0c;越来越受到卖家的重视。如何才能做好邮件营销呢&#xff1f;蜂邮EDM将手把手教你如何做好独立站邮件营销&#xff0c;让你在电商领域中更上…

RocketMQ(4.9.4)学习笔记 - 安装部署

单机部署&#xff1a; 官网文档地址&#xff1a; https://rocketmq.apache.org/zh/docs/4.x 参考文档&#xff1a; windows安装RocketMQ_rocketmq windows_book多得的博客-CSDN博客 下载地址&#xff1a; https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.…

kafka单节点创建 topic 超时

1.根据之前的知道&#xff0c;安装kafka的时候改了config的server.properies文件中的listeners配置 之前这一行是没有注释掉的&#xff0c;结果创建topic的时候时钟报错连接超时 结果资料&#xff0c;发现就是因为listeners的问题 https://blog.csdn.net/weixin_42133361/art…

批量整理相同名称文件,高效归类至指定文件夹!

你是否曾经遇到过成百上千的文件名重复&#xff0c;让人无从下手的情况&#xff1f;现在&#xff0c;我们为你带来了一款全新的文件管理工具&#xff0c;它可以让你轻松地将相同名称的文件批量整理归类到指定文件夹中&#xff0c;让你的文件管理更加高效、有序&#xff01; 第…

Java系列之 IDEA 为类 和 方法设置注解模板

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 1、类方法注解模板 1、File–>settings–…

污水处理系统有哪些设备

污水处理系统通常包括以下几种主要设备&#xff1a; 格栅&#xff1a;用于拦截大颗粒悬浮物&#xff0c;以保护后续处理设备。泵&#xff1a;用于提升污水&#xff0c;使其能够被输送到处理设备的上游。曝气池&#xff1a;通过向污水中注入空气&#xff0c;使污水中的有机物质…

【23真题】坑挖的不错,题目也有质量!

今天分享的是23年西安石油大学810的信号与系统试题及解析。 本套试卷难度分析&#xff1a;22年西安石油810考研真题&#xff0c;我也发布过&#xff0c;若有需要&#xff0c;戳这里自取!本套试题内容难度中等偏下&#xff0c;题量较少&#xff0c;没有考察选填题&#xff0c;通…