【环境变量】命令行参数 | 概念 | 理解 | 命令行参数表 | bash进程

2024-04-03 22:04

本文主要是介绍【环境变量】命令行参数 | 概念 | 理解 | 命令行参数表 | bash进程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

四组概念

命令行参数概念&理解

查看命令函参数 

命令行字符串&命令行参数表

bash进程


最近有点小忙,可能更新比较慢。

四组概念

  • 竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级。
  • 独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰。
  • 并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行。
  • 并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。

并发:在特点的时间范围内,一个CPU调度进程,多进程以上下文切换的方式保证进程同时得以推进。

用户层出现卡顿的情况❓

回答:在运行队列中排队的进程很多,CPU切换的负担过重,出现进程被再次调度的时间很长,或者长时间不被调度的情况,出现进程的卡顿,也就是用户层出现卡顿的情况。


并行:并行的同时存在并发。并发切换速度非常快,用户层感知不到的。并发的历史价值是指多个CPU能让多个进程同时运行,既便宜又能满足用户的需求。(软件技术带来的意义)


独立性(地址空间细讲):任务启动变成进程,多进程运行,进程和进程之间是不影响的。数据的独立(全局/局部,but全局变量可以被子进程看到,局部不可以)


竞争性:硬件资源优先(只有一套),进程是非常多的,进程通过访问硬件来达到自己的任务目的,进程在资源本质上天然就是具有竞争性的。

命令行参数概念&理解

main()函数可以接收参数,这些参数是什么❓表示的什么意义❓ 为什么存在❓

  • main函数的参数可带参数,也可以不带参数(这里讨论带参的)
  • int main ( int argc, char *argv[ ] )
  • 参数 int argc, char *argv[ ]
  • 参数就是命令行参数的形式参数;命令行中输入的是实际参数
  • int argc 表示指针数组中元素的个数有多少(c count)
  • char *argv 表示指针数组(数组中每个元素都是char *类型的元素)
  • >>>>>>char *类型的指针
  1. 指向某个字符的地址
  2. 指向某个字符串的起始地址
  • 在char *argv[ ]中char *类型的元素通常是指向字符串的起始地址的
  • char *argv[ ]的最后一个指针必须指向NULL
  • argc 是不包括NULL的个数的
  • 命令行输入的参数会存在程序

 

查看命令函参数 

编译运行我们发现

  • argc中的元素就是命令行中输入的是参数,即命令行参数
  • argc是根据命令行输入的参数变动的大小的
  • argc 是不包括NULL的个数的
  • char *argv[ ] 是变长数组
  • 命令行输入的参数会存在程序(自己的程序a.out 或者 系统的指令程序)和程序匹配的选项
#include<stdio.h>
#include<unistd.h>
int main(int argc,char *argv[])
{for(int i = 0;i < argc;i++){printf("argv[%d]->%s\n",i,argv[i]);}return 0;
}

 

命令行字符串&命令行参数表

  • 整体:命令行字符串
  • 局部:程序的路径&名称 + 和该进程匹配的选项(或者只有程序的路径&名称)
  • 程序:分为用户自己写的程序&选项  和 系统的程序&选项
  1. 用户在命令行输入的参数整体是一个命令行字符串。
  2. 由OS中的进程/模块负责以空格为分割线分割成1个1个字符串(把字符串变成"\0")。
  3. OS中的进程/模块 把这些字符串的地址传给argv数组,形成命令行参数表,argv中的元素都指向这些字符串。
  4. 再以参数的形式传给子进程的main函数。
  5. 命令行参数表前面都是有效字符串的地址,最后必须以NULL收尾。

【自己程序&选项】

 

【系统程序&选项】

【验证argc以NULL收尾】

#include<stdio.h>
#include<unistd.h>
int main(int argc,char *argv[])
{for(int i = 0;argv[i];i++){printf("argv[%d]->%s\n",i,argv[i]);}return 0;
}

【命令行参数表】

bash进程

有人问到底是谁这么干的❓为什么要这么干❓

回答:bash进程。 

🙂感谢大家的阅读,若有错误和不足,欢迎指正。

这篇关于【环境变量】命令行参数 | 概念 | 理解 | 命令行参数表 | bash进程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/874098

相关文章

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

4B参数秒杀GPT-3.5:MiniCPM 3.0惊艳登场!

​ 面壁智能 在 AI 的世界里,总有那么几个时刻让人惊叹不已。面壁智能推出的 MiniCPM 3.0,这个仅有4B参数的"小钢炮",正在以惊人的实力挑战着 GPT-3.5 这个曾经的AI巨人。 MiniCPM 3.0 MiniCPM 3.0 MiniCPM 3.0 目前的主要功能有: 长上下文功能:原生支持 32k 上下文长度,性能完美。我们引入了

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

[Linux]:进程(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 进程终止 1.1 进程退出的场景 进程退出只有以下三种情况: 代码运行完毕,结果正确。代码运行完毕,结果不正确。代码异常终止(进程崩溃)。 1.2 进程退出码 在编程中,我们通常认为main函数是代码的入口,但实际上它只是用户级

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo