C语言之main函数的返回值(在linux中执行shell脚本并且获取返回值)

一:函数为什么要返回值 

        (1)函数 在设计的时候是设计了参数和返回值,参数是函数的输入,返回值是函数的输出

        (2)因为函数需要对外输出数据(实际上是函数运行的一些结果值)

        (3)形式上来说函数被另一个函数所调用,返回值作为函数的值返回给调用这个函数的地方

        总结:返回值就是给调用这个函数的地方一个值

二:main函数被谁调用

        (1)main函数是特殊的,因为C语言规定了main函数是整个程序的入口,其他的函数只有直接或间接的被main函数调用才能够执行,如果没有被main函数直接或者间接的调用则这个函数在整个程序中没有起到作用

        (2)mian函数从某种角度代表了当前这个程序,或者说代表了整个程序。mian函数的开始意味着真个程序的开始,mian函数的结束返回意味整个程序的结束

        (3)谁执行了这个程序,谁就调用了mian函数 

三:linux下一个程序执行的本质

        (1)表面上来看,linux在命令行中使用./xxx命令去执行一个可执行程序

        (2)可以通过一个shell脚本来执行这个程序

        (3)可以在程序中调用执行一个程序(fork exec)

        总结:有多种方法都可以执行一个程序,但是本质上是相同的。linux中一个新程序的执行本质上是一个进程的创建、加载、运行、消亡。linux中执行一个程序其实就是创建一个新进程然后把这个程序丢进这个进程中去执行直到结束

        分享:命令行本身就是一个进程,在命令行底下去,其实这个新程序是作为命令行的一个子进程来执行的

        

四:实践获取main函数的返回值

        (1)用shell脚本执行程序可以获取程序的返回值 并且打印出来

        (2)linux shell中用$?这个符号来存储和表示上一个程序的执行结果

        步骤:创建一个.c文件和一个.sh的shell脚本文件 -> 编译链接创建的.c源文件 -> 执行链接后的程序 -> 在终端使用source 4.8.2.shell.sh (4.8.2.shell.sh 是shell脚本文件的名字) ->就可以看到结果了

        

//创建的.c源文件
#include <stdio.h>int main(void)
{return 0;        //也可以改成其他数值比如124
}
//创建的.sh源文件
#!/bin/bashecho $?

 使用gcc 4.8.2.main.c 命令编译链接文件

使用./a.out 命令 执行程序

使用source 4.8.2.shell.sh 命令执行shell脚本

下一行就是执行结果:0

 

 将返回值改为127

结果:

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

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

相关文章

springbot 界面美观的超市收银管理系统。

springbot 界面美观的超市收银管理系统。 功能&#xff1a;登录&#xff0c;用户管理&#xff0c;权限菜单管理&#xff0c;首页订单&#xff0c;收入&#xff0c;用户统计&#xff0c; 收银台&#xff0c;销售账单&#xff0c;库存管理&#xff0c;商品分类&#xff0c;供应…

30 岁的程序员,要有 “归零“ 心态

大家好&#xff0c;我是码农先森。 古话说的 “三十而立”&#xff0c;正是担重之时&#xff0c;却大部分人在职场中都处于不上不下的尴尬境地。已经没有刚毕业时那股子冲劲&#xff0c;被生活和工作磨平了棱角。 在技术思想方面&#xff0c;似乎已经触及到了天花板&#xff…

嵌入式系统中判断大小端的方法与实现

第一&#xff1a;大小端基本分析 程序判断计算机是大端的还是小端的&#xff0c;判断的思路是确定一个多字节的值(下面使用的是4字节的整数)&#xff0c;将其写入内存(即赋值给一个变量)&#xff0c;然后用指针取其首地址所对应的字节(即低地址的一个字节)&#xff0c;判断该字…

shell循环以及实验

循环是一种重复执行的代码结构&#xff0c;只要满足循环的条件&#xff0c;会一直执行这个代码 循环条件&#xff1a;在一定范围之内&#xff0c;按照指定次数来执行循环。 循环体&#xff1a;在指定的次数内&#xff0c;执行的命令序列&#xff0c;只要条件满足&#xff0c;…

C#知识|模块化分层学习笔记

哈喽&#xff0c;你好&#xff0c;我是雷工&#xff01; 01 基本分层 典型的两层结构&#xff1a;由UI层 数据访问层 实体类构成。 其中实体类不算一层&#xff0c;本质是一个数据载体。 02 模块化分层 模块概念&#xff1a;在.NET平台中&#xff0c;模块主要是指类库项目。…

Mac下载了docker,在终端使用docker命令时用不了

问题&#xff1a;在mac使用docker的时候&#xff0c;拉取docker镜像失败 原因&#xff1a;docker是需要用app使用的 &#xff0c;所以在使用的时候必须打开这个桌面端软件才可以在终端上使用docker命令&#xff01;&#xff01;&#xff01;

网络安全和信息安全

概述 信息安全、网络安全与网络空间安全是当前信息技术领域内的三个重要概念&#xff0c;它们在某些方面有着紧密的联系&#xff0c;同时在不同的语境和应用场景下又有所区别。本次分析旨在深入理解这三个概念的定义、内涵及其相互关系&#xff0c;以便更好地应用于实际工作中…

latex 新技巧:公式过长怎么编号美观? 如何缩小公式大小,不改编号大小?

常见的公式换行&#xff0c;用到 aligned align等命令 但是如何单独用align&#xff0c;可以默认编号在最短的一行&#xff0c;但是有个缺点&#xff0c;需要手动地将其他行 加上 \nonumber&#xff0c;以防每一行都有编号 \begin{align}\label{eq1} & Line 1 \\ & L…

Spring系统学习 -Spring IOC 的XML管理Bean之P命名空间、实现引入MySQL外部链接属性文件

P命名空间 在Spring框架中&#xff0c;P命名空间是一种用于简化XML配置文件中属性注入的方式。通过引入P命名空间&#xff0c;可以使用更简洁的语法来设置bean的属性值&#xff0c;而无需显式地使用<property>子元素。这使得XML配置文件更加简洁和易于阅读。 要在Sprin…

shell条件测试和if语句

“C:\Users\Jessica\Desktop\6.12.assets\image-20240612094159578.png”# shell条件测试和if语句 一、条件测试 1、$? 返回码 判断命令或者脚本是否执行成功&#xff08;最近的一条&#xff09; 0 true 为真就是成功 成立 非0 false 失败或者异常 2、test命令 可以进行…

「OC」UI练习(二)——照片墙

「OC」UI练习——照片墙 文章目录 「OC」UI练习——照片墙UITapGestureRecognizer介绍照片墙实现 UITapGestureRecognizer介绍 UITapGestureRecognizer是UIKit框架中的一个手势识别器类&#xff0c;用于检测用户在视图上的轻击手势。它是UIGestureRecognizer的一个子类&#x…

什么是vue,第一个vue实例

目录 使用vue有四个步骤&#xff1a; 1.准备容器&#xff08;HTML标签 , ....&#xff09; 2.引包&#xff08;官网&#xff09;-开发版本/生产版本 在 3.创建Vue实例new Vue() el data methods computed watch 4.指定配置项→渲染数据 Vue是一款用于构建用户界面的渐进式Ja…

Python学习笔记11 -- 细碎内容

一、注释 单行注释&#xff1a;前方加# 多行注释&#xff1a;连续三对单引号/双引号&#xff0c;引号内写注释 二、变量 1、定义&#xff1a; 可以发生改变的一个量&#xff0c;用来区分不同数据的&#xff0c;可以指向一个内存空间&#xff0c;帮助存储数据 2、命名规范&…

ROS2读源码过程中涉及到的核心点梳理解读

流控 watchdog 过滤 如何把writer跟reader匹配 依赖topic&#xff1f;QOS? datashared 如何配置 安全 何时持久化 域隔离&#xff1f; 只有在同一个域内的通信实体才能通信&#xff0c;不同域内的实体间无法进行通信 架构设计细节、扩展性&#xff1f; 代码为什么难读…

源代码防泄密经验分享之安全上网篇

场景描述&#xff1a; 随着信息技术的发展&#xff0c;越来越多的新技术产品进入到政府、军事、科研等涉密单位。这些新技术产品在给工作人员带来便利的同时&#xff0c;也给信息安全保密工作带来了许多新的不容忽视的安全隐患&#xff0c;应引起高度重视。常规的内外网隔离手…

Vue29-自定义指令:函数式

一、定义 内置指令&#xff0c;指令是vue作者定的&#xff0c;背后的操作DOM的逻辑是也是vue作者写的。 自定义指令&#xff0c;指令名自定义&#xff0c;指令背后如何去操作DOM元素&#xff0c;也是自定义。 二、需求1&#xff1a;big指令 2-1、自定义指令directive 1、写法…

美摄科技匿名化处理解决方案,包含模糊、同色、马赛克、效果遮挡等各种形式

信息安全已成为企业发展中不可忽视的重要一环&#xff0c;随着信息安全法规的日益严格和公众对个人隐私保护意识的不断提高&#xff0c;企业如何在保障业务顺畅进行的同时&#xff0c;满足信息安全和隐私保护的要求&#xff0c;成为了亟待解决的问题。美摄科技凭借其强大的技术…

西门子学习笔记13 - mtqq库项目

这是我整合过后的mqtt库的下载地址 https://download.csdn.net/download/qq_61916672/89423266https://download.csdn.net/download/qq_61916672/89423266

如何开发一个直播APP:功能介绍与开发步骤详解

随着移动互联网的迅猛发展&#xff0c;直播APP已经成为人们生活中不可或缺的一部分。无论是娱乐、教育、商业还是其他领域&#xff0c;直播APP都以其独特的实时互动性和广泛的受众群体而备受欢迎。那么&#xff0c;如何开发一个直播APP呢&#xff1f;本文将详细介绍直播APP的功…

virtualbox扩展磁盘

使用virtualbox搭建虚拟机&#xff0c;如果磁盘不够用了&#xff0c;可以通过以下方式扩展。 扩容磁盘 分区扩展 查看磁盘情况 fdisk -l Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors Units sectors of 1 * 512 512 bytes Sector size (logical/phys…