exit(1)可代替close(fd)和return 0吗?

Xiongzhizhu 2016-08-21 10:17:31
exit(1)可代替close(fd)和return 0吗?,求大牛告知
...全文
605 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
Xiongzhizhu 2016-08-28
  • 打赏
  • 举报
回复
引用 17 楼 hijack00 的回复:
exit(1)是以一种简单粗暴的方式直接退出程序执行,会打乱程序的正常执行流程。而close(fd)和return 0则显得较温和。假如exit语句在子函数中,exit将直接中断程序运行,主程序中的其他语句不会被执行;而return则会返回主程序,之后的语句会继续执行。建议尽量使用return,exit一般用在程序发生严重错误的情况下。参考我这篇博客[利用python cmd模块开发小型命令行应用程序](http://blog.csdn.net/hijack00/article/details/52224372)
谢谢 谢谢
列子汤问 2016-08-24
  • 打赏
  • 举报
回复
不要用exit代替return函数。 一个是退出进程的,一个是退出函数的。
ArthurianX 2016-08-24
  • 打赏
  • 举报
回复
不一样吧
hijack00 2016-08-24
  • 打赏
  • 举报
回复
exit(1)是以一种简单粗暴的方式直接退出程序执行,会打乱程序的正常执行流程。而close(fd)和return 0则显得较温和。假如exit语句在子函数中,exit将直接中断程序运行,主程序中的其他语句不会被执行;而return则会返回主程序,之后的语句会继续执行。建议尽量使用return,exit一般用在程序发生严重错误的情况下。参考我这篇博客[利用python cmd模块开发小型命令行应用程序](http://blog.csdn.net/hijack00/article/details/52224372)
小灸舞 版主 2016-08-22
  • 打赏
  • 举报
回复 1
1. exit用于结束正在运行的整个程序,它将参数返回给OS,把控制权交给操作系统;而return 是退出当前函数,返回函数值,把控制权交给调用函数。
2. exit是系统调用级别,它表示一个进程的结束;而return 是语言级别的,它表示调用堆栈的返回。
3. 在main函数结束时,会隐式地调用exit函数,所以一般程序执行到main()结尾时,则结束主进程。exit将删除进程使用的内存空间,同时把错误信息返回给父进程。
赵4老师 2016-08-22
  • 打赏
  • 举报
回复
不能
lm_whales 2016-08-22
  • 打赏
  • 举报
回复
引用 11 楼 paschen 的回复:
exit 是一个函数, 后者是一个语句 exit 可在任何时候终止程序,return只是返回当前函数 [quote=引用 8 楼 Xiongzhizhu 的回复:] [quote=引用 2 楼 paschen 的回复:] exit 是一个函数, 后者是一个语句 exit 可在任何时候终止进程,return只是返回当前函数 如果用主函数return后也会去调用exit
谢谢,系统是在return之后自动调用exit吗?[/quote] 不是系统调用,而是你程序在main函数结束后会调用 [/quote] ++ C++ 运行时库中,另有程序启动点,他会调用 main 函数
wen_eric 2016-08-22
  • 打赏
  • 举报
回复
顶6楼
Equim 2016-08-21
  • 打赏
  • 举报
回复
没有return 0的话编译可能过不了。
paschen 2016-08-21
  • 打赏
  • 举报
回复
exit 是一个函数, 后者是一个语句 exit 可在任何时候终止程序,return只是返回当前函数
引用 8 楼 Xiongzhizhu 的回复:
[quote=引用 2 楼 paschen 的回复:] exit 是一个函数, 后者是一个语句 exit 可在任何时候终止进程,return只是返回当前函数 如果用主函数return后也会去调用exit
谢谢,系统是在return之后自动调用exit吗?[/quote] 不是系统调用,而是你程序在main函数结束后会调用
lm_whales 2016-08-21
  • 打赏
  • 举报
回复
在我记忆中,VC 的库代码中-------VC6,VC8,VC9 都是这样的--------- 调用main 函数的方法是: exit (main(__argc,__argv)); 并不是main 函数调用 exit 而是exit 的退出参数是main 的返回值 相当于 int n =main(__argc,__argv); exit(n); 确实是 main 退出后,在调用 的exit 退出程序执行。 具体可以参考mainCRTStartup,wMainCRTStartup,WinMainCRTStartup, wWinMainCRTStartup, 这四个函数的实现,这四个函数是VC c,c++ 程序缺省的入口点 他们可能被定义为 _tmainCRTStartup, _tWinMainCRTStartup 之类的宏
Xiongzhizhu 2016-08-21
  • 打赏
  • 举报
回复
引用 5 楼 lm_whales 的回复:
exit 是少数几个,可以控制程序流程的函数之一 exit 的参数,就是程序退出码 其他的 有 1) signal,raise 对 signal raise 2)abort 3)setjmp,longjmp 对 setjmp longjmp 此外,还有些 加载执行别的程序的函数。
谢谢,补充了
Xiongzhizhu 2016-08-21
  • 打赏
  • 举报
回复
引用 2 楼 paschen 的回复:
exit 是一个函数, 后者是一个语句 exit 可在任何时候终止进程,return只是返回当前函数 如果用主函数return后也会去调用exit
谢谢,系统是在return之后自动调用exit吗?
Xiongzhizhu 2016-08-21
  • 打赏
  • 举报
回复
引用 1 楼 Equim 的回复:
没有return 0的话编译可能过不了。
异常退出是exit(1)就可以啊,没有写return 0
encoderlee 2016-08-21
  • 打赏
  • 举报
回复
exit(1)是退出程序 close(fd)是关闭文件 return 0是函数返回 功能不一样,要看场合
lm_whales 2016-08-21
  • 打赏
  • 举报
回复
exit 是少数几个,可以控制程序流程的函数之一 exit 的参数,就是程序退出码 其他的 有 1) signal,raise 对 signal raise 2)abort 3)setjmp,longjmp 对 setjmp longjmp 此外,还有些 加载执行别的程序的函数。
lm_whales 2016-08-21
  • 打赏
  • 举报
回复
exit 虽然是一个函数,并不返回被调函数,而是退出程序的运行
lm_whales 2016-08-21
  • 打赏
  • 举报
回复
exit 可以关闭所有打开的文件。。。。 ----------------至少 C FILE * 类型文fopen 打开的文件都能关闭----------- return 不可以
paschen 2016-08-21
  • 打赏
  • 举报
回复
exit 是一个函数, 后者是一个语句 exit 可在任何时候终止进程,return只是返回当前函数 如果用主函数return后也会去调用exit

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧