- 中文名
- Exit
-
2022-02-16 22:45:48
Shell内值命令之exit
介绍: exit 用于退出当前shell环境进程结束运行,并且可以返回一个状态码.一般使用$?可以获取状态码. 语法: 正确退出语法 exit #默认返回状态码0 ,一般代表命令执行成功 错误退出语法 exit 非0数字 #数字建议的范围0-255 一般代表命令执行失败 exit应用场景 1.结束当前shell进程 2.当shell进程执行出错退出时,可以返回不同的状态值代表不同的错误. 比如执行一个脚本文件里面操作一个文件时,可以返回1表示文件不存在,2表示文件没有读取权限,3表示文件类型不对.
实例
需求:编写shell脚本使用exit退出,退出时返回一个非0数字状态值,执行脚本文件并打印返回状态值
步骤:
1.创建exit.sh文件
2.编辑exit.sh文件,使用exit数字退出结束当前shell
3.执行文件,打印返回状态值
演示
vim exit.sh #!/bin/bash echo 'hello' exit 2 echo 'word' #执行 exit.sh sh exit.sh #只会输出 hello echo $? #输出2 获取上一个命令执行返回的状态码
小结
exit的应用场景 结束当前shell进程 可以返回不同的状态码,用于不同的业务处理
更多相关内容 -
git did not exit cleanly (exit code 1) .md
2021-08-05 17:58:12使用TortouieGit拉取代码的时候报git did not exit cleanly (exit code 1)的解决步骤 -
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2020-09-21 07:05:27主要介绍了详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别的相关资料,需要的朋友可以参考下 -
Python中exit、return、sys.exit()等使用实例和区别
2020-09-22 00:17:04主要介绍了Python中exit、return、sys.exit()等使用实例和区别,本文是一个实际项目中的总结,需要的朋友可以参考下 -
EXIT_EXITChart_EXIT
2021-09-11 13:19:30EXIT Matlab 类函数。附带注释 -
python安装torch时遇到 ERROR: Command errored out with exit status 1:
2020-12-22 10:32:57python安装torch时遇到 ERROR: Command errored out with exit status 1: 之前用pycharm运行github上一个模型时,遇到了import torch失败的问题,而且用pip安装失败。我根据网上的教程我的博客里有详细教程用... -
C++ 中exit(),_exit(),return,abort()函数的区别
2021-01-04 16:27:20exit()函数与_exit()函数及return关键字的区别: exit()和_exit()函数都可以用于结束进程,不过_exit()调用之后会立即进入内核,而exit()函数会先执行一些清理之后才会进入内核,比如调用各种终止处理程序,关闭... -
nonbinary_EXIT_NonBinary_EXIT_NonBinaryLDPC_LDPCEXIT_EXIT_非二进制ld
2021-09-30 13:48:01详细说明LDPC码非二进制下的EXIT特性分析的matlab代码 -
Linux 中_exit和exit的区别
2020-09-15 11:06:07主要介绍了Linux 中_exit和exit的区别的相关资料,需要的朋友可以参考下 -
Diamond:Synthesis exit by 9
2018-08-31 10:09:57解决Lattice Diamond Version 3.10.0.111.2出现的Synthesis exit by 9. Done: error code 9 问题. 下载后双击运行,关机,重启。 -
exit和abort及return的区别
2013-08-29 16:21:02介绍C语言代码中的exit和abort及return的区别 exit() 结束当前进程/程序,在整个程序中,只要调用 exit ,就结束。 return() 是当前函数返回,当然如果是在主函数 main, 自然也就结束当前 进程了,如果不是,那就是... -
Linux -- exit()函数、_exit()函数、return的说明与使用
2021-10-19 17:25:25exit()函数和_exit()函数都是用来 终止进程 的。 return是C语言关键字,主要用于子函数的返回,标识这个子函数的结束。一、概述
- 1、
exit()
函数和_exit()
函数都是用来 终止进程 的。 - 2、
return
是C语言关键字,主要用于子函数的返回,标识这个子函数的结束。
二、函数说明
当程序执行到
exit()
函数或者_exit()
函数时候,进程 会 无条件停止剩下的所有操作,清除各种数据结构,并终止本进程的运行。但是,这两函数还是有区别的,函数的调用入下图2.1所示。
图2.1 exit()和_exit()函数流程图
return
表示的是把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数值的返回,返回时可附带一个返回值,由return后面的参数指定。综上所述:
return
:函数结束,是函数级别的结束,而exit()
和_eixt()
是系统级别的结束。
但是需要注意的是,在main
函数中执行return
语句,则整个进程结束。从图2.1中可以看出
_exit()
函数的作用是直接使进程停止运行,清除其使用的内存空间,并清除其在内核中的各种数据结构;而exit()
函数则在这些基上做了一些包装,在执行退出之前加了若于道工序。exit()
函数与_exit()
函数最大的区别就在于exit()
函数在终止当前进程之前要检查该进程打开了哪些文件,并把文件缓冲区中的内容写回文件,就是图中的“清理IO缓冲”的表述。由于在Linux的标准函数库中,有一种被称为“缓冲IO(buffered I/O)”操作,其特征就是对应每一个打开的文件,在内存中都有一片缓冲区。
每次读文件时,会连续读出若干条记录,这样在下次读文件时就可以直接从内存的缓冲区中读取;同样,每次写文件的时候,也仅仅是写入内存中的缓冲区,等满足了一定的条件(如达到一定数量或遇到特定字符等),再将缓冲区中的内容一次性写入文件。
这种技术大大增加了文件读写的速度,但也为编程带来了一些麻烦,比如有些数据,认为已经被写入文件中,实际上因为没有满足特定的条件,它们还只是被保存在缓冲区内,这时用
_exit()
函数直接将进程关闭掉,缓冲区中的数据就会丢失。因此,若想保证数据的完整性,最好使用exit()
函数。如果
main()
在一个递归程序中,exit()
仍然会终止程序,但是return
将控制权移交给递归的前一级,直到最初的那一级,此时return
才会终止程序。return
和exit()
的另一个区别在于,即使在除了main()
之外的函数中调用exit()
,它也将终止整个进程。三、exit()函数和exit()函数的语法
1、
exit()
函数和_exit()
函数的原型以及头文件#include <stdlib.h> void exit(int status);
#include <unistd.h> void _exit(int status);
2、
exit()
函数和_exit()
函数的参数status
是一个整型参数,可以利用这个参数传递 进程结束时的状态,一般来说,exit(0)
表示程序正常退出,exit(1)
或者exit(-1)
表示程序异常退出。标准C里有EXIT_SUCCESS 和 EXIT_FAILURE 两个宏,定义于头文件
stdlib.h
中:/* We define these the same for all machines. Changes from this to the outside world should be done in `_exit'. */ #define EXIT_FAILURE 1 /* Failing exit status. */ #define EXIT_SUCCESS 0 /* Successful exit status. */
推荐在实际编程时候用
exit(EXIT_SUCCESS)
来表示正常退出,exit(EXIT_FAILURE)
来表示异常退出,更加方便代码阅读与理解。在实际编程中,可以用
wait()
系统调用来接收 子进程 的返回值,从而根据不同的返回值进行不同的处理。2、
exit()
函数和_exit()
函数的用法exit()
函数和_exit()
函数是两个简单的正经函数,return
也是正经的关键字。用下面的三个示例程序已经足够说明了。1)、
exit()
函数用法#include <stdio.h> #include <stdlib.h> int main(int argc, const char *argv[]) { /* 标准输出流stdout是行缓冲,遇到“\n”换行符时才实际写入终端。 */ printf("Using exit...\n"); /* 下一个输出不输出换行符 */ printf("This is the content in buffer."); exit(0); /* 调用exit函数测试 */ printf("After the exit...\n"); return 0; }
经过简单的编译与运行,可以看见运行效果如下图3.1所示。
图3.1 exit()函数运行效果图
2)、
_exit()
函数的用法#include <stdio.h> #include <unistd.h> int main(int argc, const char *argv[]) { /* 标准输出流stdout是行缓冲,遇到“\n”换行符时才实际写入终端。 */ printf("Using exit...\n"); /* 下一个输出不输出换行符 */ printf("This is the content in buffer."); _exit(0); /* 调用_exit函数测试 */ printf("After the _exit...\n"); return 0; }
经过简单的编译与运行,可以看见运行效果如下图3.2所示。
图3.2 _exit()函数运行效果图
3)、
return
的用法#include <stdio.h> #include <stdlib.h> // for EXIT_SUCCESS int return_test(int num) { if (num == 0) { return 0; /* 如果num为0,说明递归要结束了 */ } else { /* 返回自身与下一个数的加和 */ return num + return_test(num - 1); } } int main(int argc, const char *argv[]) { /* 定义一个测试变量并初始值为100 */ int num = 100; printf("Testing return...\n"); /* 调用测试函数,实现0-100的加和的操作 */ int cnt = return_test(num); /* 测试执行位置并输出结果 */ printf("cnt = %d\n", cnt); /* 在程序中途进行return */ return EXIT_SUCCESS; printf("After the return...\n"); return 0; }
经过简单的编译与运行,可以看见运行效果如下图3.3所示。
图3.3 return 运行效果图
好啦,废话不多说,总结写作不易,如果你喜欢这篇文章或者对你有用,请动动你发财的小手手帮忙点个赞,当然 关注一波 那就更好了,好啦,就到这儿了,么么哒(*  ̄3)(ε ̄ *)。 - 1、
-
C语言中exit函数的使用
2021-05-18 17:05:14exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。在多个进程时.如果有时要检测...exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束
return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。在多个进程时.如果有时要检测上进程是否正常退出的.就要用到上个进程的返回值..
exit(1)表示进程正常退出. 返回 1;
exit(0)表示进程非正常退出. 返回 0.
进程环境与进程控制(1): 进程的开始与终止
1. 进程的开始:
C程序是从main函数开始执行, 原型如下:
int main(int argc, char *argv[]);
通常main的返回值是int型, 正确返回0.
如果main的返回值为void或者无, 某些编译器会给出警告, 此时main的返回值通常是0.
关于main的命令行参数不做过多解释, 以下面的程序展示一下:
以下是代码片段:
#include
int main(int argc, char *argv[])
{
int i;
for (i = 0; i < argc; i++)
printf("argv[%d]: %s\n", i, argv[i]);
return 0;
}
2.
进程终止:
C程序的终止分为两种: 正常终止和异常终止.
正常终止分为: return, exit, _exit, _Exit, pthreade_exit
异常中指分为: abort, SIGNAL, 线程响应取消
主要说一下正常终止的前4种, 即exit系列函数.
以下是代码片段:
#include
void exit(int status);
void _Exit(int status);
#include
void _exit(int status);
以上3个函数的区别是:
exit()(或return 0)会调用终止处理程序和用户空间的标准I/O清理程序(如fclose),
_exit和_Exit不调用而直接由内核接管进行清
理.
因此, 在main函数中exit(0)等价于return 0.
3.
atexit终止处理程序:
ISO C规定, 一个进程最对可登记32个终止处理函数, 这些函数由exit按登记相反的顺序自动调用. 如果同一函数登记多次,
也会被
调用多次.
原型如下:
#include
int atexit(void (*func)(void));
其中参数是一个函数指针, 指向终止处理函数, 该函数无参无返回值.
以下面的程序为例:
以下是代码片段:
#include
static void myexit1()
{
printf("first exit handler\n");
}
static void myexit2()
{
printf("second exit handler\n");
}
int main()
{
if (atexit(my_exit2) != 0)
printf("can't register my_exit2\n");
if (atexit(my_exit1) != 0)
printf("can't register my_exit1\n");
if (atexit(my_exit1) != 0)
printf("can't register my_exit1\n");
printf("main is done\n");
return 0;
}
运行结果:
以下是代码片段:
$ ./a.out
main is done
first exit handler
first exit handler
second exit handler运行结果:
$./a.out arg1 arg2 arg3
argv[0]: ./a.out
argv[1]: arg1
argv[2]: arg2
argv[3]: arg3
(转)C语言中Exit函数的使用
C语言中Exit函数的使用 exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如 ...
C语言中system()函数的用法总结(转)
system()函数功能强大,很多人用却对它的原理知之甚少先看linux版system函数的源码: #include #include
c语言中的c语言中realloc()函数解析
c语言中realloc()函数解析 真是有点惭愧,这些内容本应该很早就掌握的,以前只是糊里糊涂的用,不知道在内存中具体是怎么回事,现在才弄清楚. realloc(void *__ptr, size_t ...
C语言中qsort函数用法
C语言中qsort函数用法-示例分析 本文实例汇总介绍了C语言中qsort函数用法,包括针对各种数据类型参数的排序,非常具有实用价值非常具有实用价值. 分享给大家供大家参考.C语言中的qsort ...
使用C语言中qsort()函数对浮点型数组无法成功排序的问题
一 写在开头 1.1 本节内容 本节主要内容是有关C语言中qsort()函数的探讨. 二 问题和相应解决方法 qsort()是C标准库中的一个通用的排序函数.它既能对整型数据进行排序也能对浮点型数据进 ...
C语言中malloc函数返回值是否需要类型强制转换问题
1. 在C语言中, 如果调用的函数没有函数原型, 则其返回值将默认为 int 型. 考虑调用malloc函数时忘记了 #include 的情况 此时malloc函数返回 ...
R语言中apply函数
前言 刚开始接触R语言时,会听到各种的R语言使用技巧,其中最重要的一条就是不要用循环,效率特别低,要用向量计算代替循环计算. 那么,这是为什么呢?原因在于R的循环操作for和while,都是基于R语言 ...
C语言中malloc函数的理解
在C语言中malloc函数主要是用在堆内存的申请上,使用malloc函数时,函数会返回一个void *类型的值,这个值就是你申请的堆内存的首地址:为什么返回的地址是一个void *类型的地址呢?首先我 ...
关于C语言中printf函数“输出歧视”的问题
目录 关于C语言中printf函数"输出歧视"的问题 问题描述 探索问题原因 另一种研究方法 问题结论 关于C语言中printf函数"输出歧视"的问题 问题描述 ...
随机推荐
Linux 安装Weblogic12 - copy
# groupadd weblogic# useradd -g weblogic weblogic# passwd weblogic# mkdir -p /var/bea# chown -R webl ...
Windows计数器做性能监控(window server 2008服务器)
使用Windows计数器 一.创建数据收集器集 二.创建数据收集器 三.使用数据收集器 1.修改数据收集器的属性 2.手动启用.手动停止数据收集器集 3.计划任务 4.在性能监视器中查看 一.性能监视 ...
HDU1166-敌兵布阵(线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 #include #include #i ...
Horizontal,vertical,Input_Mouse,Input_Key
鼠标获取 using UnityEngine; using System.Collections; public class Input_Mouse : MonoBehaviour { void Up ...
js编码、解码
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1 ...
JavaSwing JScrollPane的使用
JavaSwing JScrollPane的使用: 参考:http://duyz.blog.ifeng.com/article/340649.html package com.srie.test; i ...
最近任务 &;&; react文章列表
最近任务 读书 数据分析 react深入学习 可视化大图 移动端入门 [React学习] 入门学习-文本渲染 http://www.cnblogs.com/huxiaoyun90/p/4783663. ...
Python自省
自省就是通过一定机制查询到对象的内部结构,也就是运行时获取对象内部的属性以及类型,在Python中dir(),type(), hasattr(), isinstance()都是很好的自省例子 #!/u ...
黄聪:PHP去掉转义后字符串中的反斜杠\函数stripslashes
addslashes函数主要是在字符串中添加反斜杠对特殊字符进行转义,stripslashes则是去掉转义后字符串中的反斜杠\,比如当你提交一段json数据到PHP端的时候可能会遇到json字符串中有 ...
python 读取wav 音频文件的两种方式
python 中,常用的有两种可以读取wav音频格式的方法,如下所示: import scipy from scipy.io import wavfile import soundfile as sf ...
-
Bash exit命令和exit退出代码
2021-05-11 17:29:30在本文中,我们将介绍Bash exit内置命令和已执行命令的退出状态。退出状态每个shell命令成功终止或失败均返回退出代码。按照惯例,退出代码为零表示命令成功完成,而非零表示遇到错误。特殊变量$?返回最后执行的命令...通常,在编写Bash脚本时,需要在满足特定条件时终止脚本,或者根据命令的退出代码采取措施。
在本文中,我们将介绍Bash exit内置命令和已执行命令的退出状态。
退出状态
每个shell命令成功终止或失败均返回退出代码。
按照惯例,退出代码为零表示命令成功完成,而非零表示遇到错误。
特殊变量$?返回最后执行的命令的退出状态:date &> /dev/null
date命令成功完成,并且退出代码为零:0
如果您尝试在不存在的目录上运行ls,则退出代码将为非零值:ls /nonexisting_dir &> /dev/null2
状态码可用于找出命令失败的原因。 每个命令的手册页都包含有关退出代码的信息。
执行多命令管道时,管道的退出状态为最后一条命令的退出状态:sudo tcpdump -n -l | tee file.out
在上述示例中,echo $?将显示tee命令的退出代码。
Bashexit命令
exit命令以状态N退出shell。 它具有以下语法:exit N
如果未给出N,则退出状态代码为最后执行的命令的代码。
在shell脚本中使用时,作为exit命令的参数提供的值将作为退出代码返回给shell。
范例
exit命令的退出状态可用于条件命令,例如。 在下面的示例中,如果在filename中找到“搜索字符串”,则grep将以零退出(这在shell脚本中表示为true):if grep -q "search-string" filename then
echo "String found."
else
echo "String not found."
fi
运行以&&(与)或||(或)分隔的命令列表时,命令的退出状态确定是否将执行列表中的下一个命令。 在此,仅当cd返回零时,才会执行mkdir命令:cd /opt/code && mkdir project
如果脚本以exit结尾但未指定参数,则脚本退出代码是脚本中最后执行的命令的退出代码。
〜/script.sh#!/bin/bash
echo "doing stuff..."
exit
仅使用exit与exit $?相同,或省略exit。
以下示例显示了如何由非root用户调用脚本来终止脚本:#!/bin/bash
if [[ "$(whoami)" != root ]]; then
echo "Only user root can run this script."
exit 1
fi
echo "doing stuff..."
exit 0
如果您以root身份运行脚本,则退出代码将为零。 否则,脚本将以状态1退出。
结论
每个shell命令终止时都会返回退出代码。 exit命令用于退出具有给定状态的外壳。
如果您有任何问题或反馈,请随时发表评论。
-
c语言中exit函数 c语言中exit与break区别
2021-05-18 17:23:29C语言中exit();怎么用?exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束。 return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。 在... -
安装nvm时报错exit status 145和exit status 1 exit status 5
2022-02-16 16:50:28(1)第一步使用管理员身份打开 ...exit status 1: ���ļ��Ѵ���ʱ�����������ļ��� C:\Windows\system32>nvm v 1.1.9 C:\Windows\system32>nvm v 1.1.7 C:\Windows\system32>nvm -
STM32笔记之 EXIT(外部中断)
2020-01-27 11:38:04写在前面: 本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和...在上一篇STM32笔记之 GPIO引脚中,有用到 EXIT外部中断作为 Key输入触发,所以本篇来... -
c语言中exit函数_C ++中的exit()函数
2020-07-19 00:04:52c语言中exit函数 介绍 (Introduction) Today we’ll learn about exit() in C++. We know we can break out of loops using the built-in break function in C++. Similarly, we can also break out of a whole C++ ... -
Java System#exit 无法退出程序的问题探索
2020-06-07 00:56:13有朋友碰到了一个情况:java.lang.System#exit无法退出应用程序。我听到这种情况的时候是感觉很惊奇的,这函数还能不起作用?这就好奇不已了呀 接着,朋友继续给出了他的场景描述:在Dubbo应用连接注册中心的时候,... -
return和exit的区别
2018-12-24 17:47:001. exit用于结束正在运行的整个程序,它将参数返回给OS,把控制权交给操作系统;而return 是退出当前函数,返回函数值,把控制权交给调用函数。2. exit是系统调用级别,它表示一个进程的结束;而return 是语言级别的... -
android studio finished with non-zero exit value 1, value 2解决办法
2016-12-12 17:26:36解决androidstudio中出现finished with non-zero exit value 1,或者finished with non-zero exit value 2的问题 -
exit函数在那个头文件
2021-05-21 06:42:45c语言 exit的头文件是什么?C语言exit函数的头文件是stdlib.h。 exit的声明为 void exit(int value); exit的作用是,退出程序,并将参数value的值返回给主调进程。 exit(a); 等效于在main函数中return a;C++中exit ... -
Python中exit()和sys.exit()之间的区别
2020-12-13 11:48:18在Python中,有两个类似命名的函数, exit()和sys.exit() 。 有什么区别,什么时候应该使用一个而不是另一个?#1楼如果我在代码中使用exit()并在shell中运行它,它会显示一条消息,询问我是否要终止该程序。 这真的... -
C++ 语言 EXIT_SUCCESS, EXIT_FAILURE
2020-02-20 16:46:08C++ 语言 EXIT_SUCCESS, EXIT_FAILURE 1. EXIT_SUCCESS, EXIT_FAILURE Defined in header <cstdlib> - 定义于头文件 <cstdlib> #define EXIT_SUCCESS /*implementation defined*/ #define EXIT_FAILURE ... -
C语言中exit(0) 、exit(1) 和return的区别
2022-03-11 17:20:13C语言中的exit文字描述代码验证return 表示返回 , 函数返回exit 表示程序退出exit(0) 表示正常退出,代码为1exit(1) 表示异常退出,代码为1 文字描述 return是语言级别的,它表示了调用堆栈的返回;而exit是系统... -
Python中的exit()和sys.exit()之间的区别
2021-01-14 21:14:03exit是交互式外壳的帮助器 –sys.exit旨在用于程序。The site module (which is imported automatically during startup, except if the -S command-line option is given) adds several constants to the built-in ... -
使用homebrew 的时候失败fatal: not in a git directory Error: Command failed with exit 128: git
2022-05-09 16:47:42使用使用homebrew 的时候失败fatal: not in a git directory Error: Command failed with exit 128: git ~ brew install nginx Warning: No remote 'origin' in /usr/local/Homebrew/Library/Taps/homebrew/... -
python3.7出现Process finished with exit code 132
2021-01-06 17:26:23Process finished with exit code 132 (interrupted by signal 4: SIGILL) 使用命令运行出现: zsh: illegal hardware instruction python tob_api.py 找了很多关键词没有什么收获,求解惑 <p>... -
git did not exit cleanly (exit code 128)我个人解决方案
2022-03-04 21:40:44使用TortoiseGit 进行pull时,总是提示连接错误 “git did not exit cleanly (exit code 128)” 无论是push还是pull到本地,弹出这个问题。 原因:是Github 禁用了TLS v1.0 and v1.1,必须更新Windows的git凭证管理...