当前位置: 首页 > news >正文

嵌入式培训机构四个月实训课程笔记(完整版)-Linux系统编程第三天-Linux进程(物联技术666)

  更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。

物联技术666_嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记-CSDN博客物联技术666擅长嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机领域.https://blog.csdn.net/weixin_39804904?type=blog

上午:  进程      

下午:编写shell

教学内容:

1、进程和程序最本质的区别是程序是静态的,而进程是动态的。

2、进程调度:先进先出原则,短进程优先原则,优先级原则,随机原则。

3、进程控制块(PCB):PCB是操作系统中最重要的记录型数据结构。PCB中记录了用于描述进程进展情况及控制进程运行所需的全部信息。在Linux中PCB存放在task_struct结构体中。

4、每个进程都有一个非负整型数表示的唯一进程ID。进程ID标识符总是唯一的,但进程ID可以重用。当一个进程终止后,其进程ID就可以再次使用了。(但要等待一些时间才能重新使用这个进程ID)

5、进程号(PID),父进程号(PPID),进程组号(PGID);Linux操作系统提供了三个获得进程号的函数getpid()、getppid()、getpgid();每一个进程都是别的进程中开启的,linux中0进程是进程调度,1进程是进程初始化。

6、在linux环境下,创建进程的主要方法是调用以下两个函数:fork();vfork();

新的数据类型pid_t,实际上就是整型,是为进程号;

#include <sys/types.h>

#include <unistd.h>

pid_t fork(void);pid=fork();pid返回进程号,在父进程中pid是子进程的进程号,在子进程中是pid为0;子进程把父进程的环境复制了一份,(注意不是说子进程号为0;)能父进程和子进程同时进行,程序结构是:

pid=fork();

if(pid<0)

   perror("fork");

else if(pid==0)

{

。。。。

}

else

{

。。。。

}

~~~~~~~~~~~~~~~~~~~~~~~~

关于对指向地址的子进程操作不会改变父进程该地址的值问题?

int *p = (int*) malloc(sizeof(int));

// p = 0xDEAD BEEF

pid = fork();

if (pid == 0) {

  // child process

  p 指向的是新进程中的 0xDEAD BEEF 内存位置

}

else {

  // parent process

  *p = 1; // 修改的是父进程内存中 0xDEAD BEEF 位置

}

虽然两个指针指向的相对位置相同,但是两个地址是分散在两个进程地址空间中的。

~~~~~~~~~~~~~~~~~~~~~~~~~~

pid_t vfork(void);pid=fork();pid返回进程号,在父进程中pid是子进程的进程号,在子进程中是pid为0;(注意不是说子进程号为0;),子进程是在父进程的环境运行,仅仅重启了一个新的进程,在运行中必须先保证子进程运行结束才会运行父进程和fork完全不同

pid=fork();

if(pid<0)

   perror("fork");

else if(pid==0)

{

。。。。

_exit(0);   //或者execl(),要不结束这个进程,要不重启函数替代这个新的进程;结束这个进程不要改变父进程的环境,所以不能调用exit()函数。

}

else

{

。。。。

  }

7、wait和waitpid:

pid_t wait(int *status):等待上一个进程的返回值赋值给*status;

如果执行成功则返回子进程ID

出错返回-1,失败原因存于errno中;可以用以下的宏来判断status的情况。

pid_t waitpid(pid_t pid, int *status,int options):等待指定进程结束

相关文章:

嵌入式培训机构四个月实训课程笔记(完整版)-Linux系统编程第三天-Linux进程(物联技术666)

更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。 物联技术666_嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记-CSDN博客物联技术666擅长嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件,单片机…...

1-01初识C语言

一、概述 C语言是贝尔实验室的Ken Thompson&#xff08;肯汤普逊&#xff09;、Dennis Ritchie&#xff08;丹尼斯里奇&#xff09;等人开发的UNIX 操作系统的“副产品”&#xff0c;诞生于1970年代初。 Thompson和Ritchie共同创作完成了Unix操作系统&#xff0c;他们都被称为…...

Python字符串

定义字符串 Python中要定义一个字符串&#xff0c;有比较多的一种方式。 示例代码&#xff1a; s "你好&#xff0c;张大鹏" print(s, type(s))s 你好&#xff0c;张大鹏 print(s, type(s))s """你好&#xff0c;张大鹏""" prin…...

PHP 基础编程 1

文章目录 前后端交互尝试php简介php版本php 基础语法php的变量前后端交互 - 计算器体验php数据类型php的常量和变量的区别php的运算符算数运算符自增自减比较运算符赋值运算符逻辑运算 php的控制结构ifelseelse if 前后端交互尝试 前端编程语言&#xff1a;JS &#xff08;Java…...

Android studio BottomNavigationView 应用设计

一、新建Bottom Navigation Activity项目: 二、修改bottom_nav_menu.xml: <itemandroid:id="@+id/navigation_beijing"android:icon="@drawable/ic_beijing_24dp"android:title="@string/title_beijing" /><itemandroid:id="@+i…...

51单片机串行口相关知识

51单片机串行口相关知识 串行通信概念 计算机与外部通信方式就两种&#xff1a; 并行通信串行通信 两种通信方式的特点以及适用场景&#xff1a; 名称特点适用场景并行通信速度快&#xff0c;效率高&#xff0c;成本高适合短距离高速通信&#xff0c;如计算机内部各硬件之…...

IDEA 每次新建工程都要重新配置 Maven的解决方案

文章目录 IDEA 每次新建工程都要重新配置 Maven 解决方案一、选择 File -> New Projects Setup -> Settingsfor New Projects…二、选择 Build,Execution,Deployment -> Build Tools -> Maven IDEA 每次新建工程都要重新配置 Maven 解决方案 DEA 每次新建工程都要…...

SecOC中新鲜度值和MAC都按照完整的值来生成,但是在发送和认证的时候只会截取一部分。这边截取的部分一般取多长?由什么参数设定?

新鲜度值(Freshness Value, FV)和消息验证码(Message Authentication Code, MAC)是SecOC协议中用于保证数据的真实性和新鲜度的重要信息。它们的长度取决于不同的因素,如加密算法、安全级别、通信带宽等。 一般来说,FV和MAC的长度越长,安全性越高,但也会占用更多的通信…...

信源编码与信道转移矩阵

目录 一. 信息论模型 二. 点对点通信模型 三. 信源编码 四. 信道转移矩阵 4.1 二进制对称信道 4.2 二进制擦除信道 五. 小结 &#xff08;1&#xff09;信道直射与反射 &#xff08;2&#xff09;信道散射 &#xff08;3&#xff09; 信道时变性 一. 信息论模型 194…...

React 实现拖放功能

介绍 本篇文章将会使用react实现简单拖放功能。 样例 布局侧边栏拖放 LayoutResize.js import React, {useState} from "react"; import { Button } from "antd"; import "./LayoutResize.css";export const LayoutResize () > {const […...

马克思主义基本原理笔记

马克思主义哲学、政治经济学、科学社会主义理论 哲学 马克思主义中国化的理论成果&#xff1a;毛泽东思想、邓小平理论、三个代表重要思想、科学发展观 物质和意识哪个是本原&#xff0c;是哲学的基本问题 辩证法认为世界上的事物都是相互联系的、运动发展的&#xff0c;形…...

Vue+JavaSpingBoot笔记(1)

一、前后端通信参数问题 1.集合【字典】类型 Vue前端传递参数: export default {methods: { test(){// 将 filteredData 中的每一行值放入 newData 对象数组中 const newData filteredData.map(item > ({key1: item.Value1,key2: item.Value2,key3: "测试"}));r…...

10-单例模式(Singleton)

意图 保证一个类只有一个实例&#xff0c;并提供一个访问它的全局访问点 实现 1 懒汉式&#xff0c;线程不安全 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance null) {…...

C++ 求一个数是否是丑数。

#include<string.h> #include <iostream> using namespace std; int isChou(int num) { if (num < 0) { return 0; } while (num % 2 0) { // 不断除以2&#xff0c;直到不能整除为止 num / 2; } while (num % 3 0) { // 不断除…...

SpringCloud系列篇:核心组件之注册中心组件

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于SpringCloud的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.注册中心组件是什么 二.注册中心…...

通过IP地址防范钓鱼网站诈骗的有效措施

随着互联网的普及&#xff0c;钓鱼网站诈骗成为一种广泛存在的网络犯罪行为。通过冒充合法网站&#xff0c;攻击者试图窃取用户的敏感信息。本文将探讨如何通过IP地址防范钓鱼网站诈骗&#xff0c;提供一系列有效的措施&#xff0c;以加强网络安全&#xff0c;保护用户免受诈骗…...

服务器GPU温度过高挂掉排查记录

服务器GPU挂掉 跑深度学习的代码的时候发现中断了。通过命令查看&#xff1a; nvidia-smi显示 Unable to determine the device handle for GPU 0000:01:00.0: Unknown Error。感觉很莫名其妙。通过重启大法之后&#xff0c;又能用一段时间。 shutdown -r now但是过了一个小…...

服务器终端快速下载coco数据集

######解压到当前文件夹 sudo apt-get install aria2 aria2c -c <url> #<url>即为官网下载地址# url # download images http://images.cocodataset.org/zips/train2017.zip http://images.cocodataset.org/zips/val2017.zip# download annotations http://i…...

el-select下拉框 change事件返回该项所有数据

主要代码 value-key <template><div><el-selectv-model"value"value-key"label"placeholder"请选择"change"selectChange"><el-optionv-for"item in options":key"item.label":label"…...

MySQL基础篇(一)SQL

视频地址: 黑马程序员 MySQL数据库入门到精通&#xff0c;从mysql安装到mysql高级、mysql优化全囊括 SQL&#xff0c;全称 Structured Query Language&#xff0c;结构化查询语言。操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一 标准。 一、SQL通用语…...

Go的interface空值与类型断言的最佳实践

Go语言中的interface空值与类型断言是开发者经常遇到的核心概念&#xff0c;掌握其最佳实践能显著提升代码的健壮性和可维护性。interface的灵活性使其成为Go多态的重要工具&#xff0c;但空值处理和类型断言的不当使用可能导致运行时错误或逻辑漏洞。本文将深入探讨如何高效处…...

不只是PointNet++:盘点那些依赖pointnet2_ops_lib的热门点云项目(PCT/SnowflakeNet)及一键配置心得

点云深度学习生态中的关键组件&#xff1a;pointnet2_ops_lib深度解析与实战指南 在三维视觉领域&#xff0c;点云数据处理一直是研究热点。不同于传统图像数据&#xff0c;点云具有无序性、稀疏性和非结构化的特点&#xff0c;这给深度学习模型的设计带来了独特挑战。PointNet…...

OpenClaw配置优化:提升GLM-4.7-Flash响应速度的3个技巧

OpenClaw配置优化&#xff1a;提升GLM-4.7-Flash响应速度的3个技巧 1. 为什么需要优化GLM-4.7-Flash的响应速度 上个月我在本地部署了OpenClaw对接GLM-4.7-Flash模型&#xff0c;最初的使用体验并不理想。一个简单的文件整理任务需要等待近20秒才能开始执行&#xff0c;而复杂…...

OpenClaw定时任务专家:用Qwen3-32B镜像实现凌晨自动备份与报表生成

OpenClaw定时任务专家&#xff1a;用Qwen3-32B镜像实现凌晨自动备份与报表生成 1. 为什么需要定时任务自动化 作为一个经常需要处理数据库和报表的开发者&#xff0c;我发现自己总是在重复同样的工作&#xff1a;每天凌晨备份数据库、生成统计报表、然后发送给相关同事。这种…...

LangChain RAG实战:用PGVector把你的本地知识库变成智能问答机器人(Python代码详解)

LangChain RAG实战&#xff1a;用PGVector把你的本地知识库变成智能问答机器人&#xff08;Python代码详解&#xff09; 你是否曾经面对堆积如山的本地文档感到无从下手&#xff1f;PDF报告、Markdown笔记、TXT日志散落在各个文件夹&#xff0c;每次查找关键信息都像大海捞针。…...

3分钟学会用Draw.io ECE插件绘制专业级电路图:告别复杂EDA软件

3分钟学会用Draw.io ECE插件绘制专业级电路图&#xff1a;告别复杂EDA软件 【免费下载链接】Draw-io-ECE Custom-made draw.io-shapes - in the form of an importable library - for drawing circuits and conceptual drawings in draw.io. 项目地址: https://gitcode.com/g…...

专为AI打造的浏览器:内存占用仅为Chrome的1/9、比Chrome快11倍(Docker部署教程,支持飞牛nas等服务器部署)

文章目录 📖 介绍 📖 🏡 演示环境 🏡 📒 轻量级无头浏览器介绍与Docker部署指南 📒 📝 工具介绍 🎯 为什么选择它 🔧 Docker Compose 快速部署 💡 连接进行自动化操作 ⚠️ 注意事项 📊 性能对比 🎯 适用场景 ⚓️ 相关链接 ⚓️ 📖 介绍 📖 在自动…...

突破语言壁垒:XUnity.AutoTranslator让Unity游戏翻译不再复杂

突破语言壁垒&#xff1a;XUnity.AutoTranslator让Unity游戏翻译不再复杂 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 一、游戏语言困境&#xff1a;玩家面临的真实挑战 想象一下&#xff0c;你终于等…...

Linux系统auditd审计服务实战:从零配置到规则优化(附常用命令大全)

Linux系统auditd审计服务实战&#xff1a;从零配置到规则优化&#xff08;附常用命令大全&#xff09; 当服务器遭遇入侵时&#xff0c;大多数管理员的第一反应往往是查看历史命令记录。但现实情况是&#xff0c;黑客通常会第一时间清空.bash_history文件。这时&#xff0c;一个…...

ollama-QwQ-32B微调实践:优化OpenClaw的鼠标操作准确率

ollama-QwQ-32B微调实践&#xff1a;优化OpenClaw的鼠标操作准确率 1. 为什么需要微调模型&#xff1f; 去年冬天&#xff0c;当我第一次用OpenClaw自动整理桌面文件时&#xff0c;眼睁睁看着它把"季度报表.xlsx"拖进了"娱乐"文件夹——这个哭笑不得的瞬…...