首页 > 系统相关 >linux-11 关于shell(十)执行入口、模数

linux-11 关于shell(十)执行入口、模数

时间:2024-12-02 18:32:47浏览次数:7  
标签:11 命令提示符 shell 程序 入口 模数 内核 linux 执行

    比如说在系统刚刚启动的时候,这里要求我们进行登录,我输入用户名,然后输入密码,就可以正常登录,正常登录以后,会显示什么,叫命令提示符对吧?叫做prompt,
我们把它称为叫命令提示符。如下图,


那就意味着我们在底下可以输入命令了,对吧?既然叫命令提示符,那么所输入的一定得是命令,
要注意这点,一定得是命令才成,当然,这里的命令既可以是二进制的程序,也可以是脚本文件,
只不过对于内核而言,它是严格区分两种不同的。

    那之前提到过,一个程序在启动的时候,它到底是如何能够被启动起来的?它到底为什么能执行起来?这个我们不便于过于深入的去了解它,但要明白,一般来讲,一个可执行文件,它必须有一个程序的执行入口,还提到过库是没有执行入口的,虽然它可执行,那因此,一个程序必须要有执行入口,那怎么是有执行入口呢?这个二进制文件开头处有一个特殊字符,或者有几个字节是非常独特的标识,我们把它称为叫程序的模数,叫magic number,这个magic number可以标识这个二进制程序的执行格式。

    各位还需要理解的是,在Windows上所执行程序的模数和在linux上所执行的程序的模数是不一样的。他们所理解的二进制格式也是不尽相同的,所以就算两者的库完全一样,Windows的C语言库和linuxC语言库完全一致,你在linux上编译的程序,它也未必能在Windows上运行。

    接下来,讲到写脚本的时候,大家应该知道,比如说在脚本开始的时候,写个什么井号叹号,
比如像#!/bin/bash、#!/bin/sh等等,我们脚本第一行必须得这样写,为什么呢?其实这就是给我们这样一个文件,指定一个模数的,这就是个模数,它也被称为叫shebang,但一定要记得,当一个程序被启动的时候,这个程序的执行入口,或者这个程序又被提交给内核了,
大家应该知道,只有内核才能管理进程的,还记得吗?之前提到过的内核功能,进程管理,内存管理,文件系统等等,对不对?还有什么?驱动程序,对吧?这些基本的概念,一定要记牢了,因为以后它处处体现这些功能的,而且以后管理这些文件,一旦在说起这个东西的时候,你必须要知道它在什么地方。
    那因此,当在命令提示符底下给它一个命令,或者给它建入一个命令,并敲回车的时候,
这么个执行程序就会被提交给内核,由bash提交给内核,内核接着就去找这个执行程序的模数,
看它是不是一个可执行格式以及是不是当前内核可以理解的可执行格式,如果是就执行起来了,
否则就拒绝运行。当然,到底是不是会真正执行,还要取决于权限等各种复杂的外围机制,没说那么复杂,但要理解这个概念,所以程序必须得有执行入口,这个执行入口就是用于标识它的模数以及这个程序的执行格式的等等。

标签:11,命令提示符,shell,程序,入口,模数,内核,linux,执行
From: https://blog.csdn.net/surongle123/article/details/144195127

相关文章

  • 【C++】右值引用全面揭秘:解锁 C++11 的性能革命与移动语义奥秘!
    文章目录右值和左值的基本概念左值引用和右值引用右值引用的主要用途移动语义只有拷贝构造和赋值重载而没有移动语义的传值返回增加移动构造和移动赋值的传值返回引用折叠与完美转发C++11引入了右值引用,这是C++语言的一个重要特性,目的是为了提高程序的性能,尤其在对......
  • UniApp 微信小程序请求接口报错:request:fail errcode:10011 的原因分析与解决方案
    UniApp微信小程序请求接口报错:request:failerrcode:10011的原因分析与解决方案在使用UniApp开发微信小程序时,我们可能会遇到一些请求接口的错误,特别是request:failerrcode:10011cronet_error_code:0error_msg:networkchange,cancelalltask这样的错误信息。这......
  • 2024.11.26(周二)
    旅游的出行方式有乘坐飞机旅行、乘火车旅行和自行车游,不同的旅游方式有不同的实现过程,客户可以根据自己的需要选择一种合适的旅行方式。实验要求:1. 画出对应的类图;2. 提交源代码;3. 注意编程规范。  1、类图  2、源代码#include<iostream>usingnamespaces......
  • 2024.11.29(周五)
    #导入必要的库importnumpyasnpfromsklearn.model_selectionimporttrain_test_split,cross_val_score,StratifiedKFoldfromsklearn.linear_modelimportLogisticRegressionfromsklearn.datasetsimportload_irisfromsklearn.metricsimportaccuracy_score,pr......
  • 2024.11.28(周四)
    importpandasaspdimportnumpyasnpfromsklearn.datasetsimportload_irisfromsklearn.ensembleimportRandomForestClassifierfromsklearn.metricsimportprecision_score,recall_score,f1_score,accuracy_scorefromsklearn.model_selectionimporttrain......
  • 2024.11.27(周三)
    importpandasaspdfromsklearn.datasetsimportload_irisfromsklearn.model_selectionimportcross_val_score,cross_validate,StratifiedKFoldfromsklearn.ensembleimportRandomForestClassifierfromsklearn.metricsimportprecision_score,recall_score,......
  • 11月30日,工信部人才交流中心 & CUUG - PGCP/PGCM认证考试完成!
    2024年11月30日,由工业和信息化部人才交流中心与北京神脑资讯技术有限公司共同举办的PostgreSQL管理员岗位能力认证考试(PGCP中级/PGCM高级)完成。​中级PG认证专家-PGCP(PostgreSQLCertifiedProfessional):是对PostgreSQL数据库技术能力的一种认可,达到了专家级别,可以对PostgreSQL......
  • ssh连接linux服务器中断后,如何让命令继续在服务器运行
    ssh连接linux服务器中断后,如何让命令继续在服务器运行这个问题也许是我们这些小白比较头疼的问题,尤其对于做机器学习需要花很久的时间才能训练出一个结果。然而就在这时,因为各种不可抗力我们使用ssh连接服务器时,ssh的窗口突然断开了连接,那么在服务器上跑的程序就也跟着断掉了,之前......
  • 11月阅读笔记
    技术与实践代码即沟通:书中强调了代码的可读性和可维护性。代码不仅仅是实现功能的工具,更是与同事、未来自己沟通的桥梁。因此,我们应该注重代码的整洁、清晰,避免冗余和混乱。持续学习:在这个快速变化的时代,持续学习是程序员保持竞争力的关键。书中提到了多种学习方法,如阅读技术书......
  • 1100 道 Java 面试题(含答案)
    2025年马上快到了,发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全~这套互联网Java工程师面试题包括了:MyBatis、ZK、Dubbo、EL、Redis、MySQL、并发编程、Java面试、Spring、微服务、Linux、Springboot、SpringCloud、MQ、Kafka面试专题......