return 到底都做了些什么?

zh1369 2006-02-05 05:32:56
return相信大家是经常用到的东西吧!不过今天遇到了这样的一个问题:
在同一程序中的int main(int,char**)函数中调用return却不能退出程序(程序就死到那里了,只能用ctrl+z,或是killall -9 才能退出),可用exit(0)就可以退出程序。在网上查到的资料明明说的是:在main中用exit与return是一样的。但现在是不一样。
我用的环境是
linux 9.0
gcc version 3.2 20020903 (Red Hat Linux 8.0 3.2-7)
我在程序用到了第三方库,并且还用了线程。
我想可能是与这有关,但不能确定,所以请教!
...全文
249 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
healer_kx 2006-02-07
  • 打赏
  • 举报
回复
建议放弃linux 9和gcc。
本来都是顺利成章的事情,搞得那么复杂,攻击却是比攻击Win32还容易。
xuleit 2006-02-07
  • 打赏
  • 举报
回复
在主函数中用return会等到所有的线程(包括你的子线程)都执行完了再才会结束程序。

根据你的情况我判断是你的子线程并没有结束,你可以调用pthread_join()等待所有创建的子线程都执行完了再退出。
wshcdr 2006-02-06
  • 打赏
  • 举报
回复
楼主能给出简单代码实例就好了

我也可以跑一跑
wangzhanlili 2006-02-06
  • 打赏
  • 举报
回复
LINUX下或有区别. WIN下一样.
loujing 2006-02-06
  • 打赏
  • 举报
回复
一种情况是程序进入死循环,return语句无法到达。
iamcaicainiao 2006-02-05
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4539/4539542.xml?temp=9.804934E-02
LINUX下或有区别. WIN下一样.
主函数中的RETURN 0表示正常.1表示异常.
其它函数中,看需要了....
一般来讲1是正常.0是非正常.不过这样说也不准确.

在main函数中我们通常使用return (0);这样的方式返回一个值。

但这是限定在非void情况下的也就是void main()这样的形式。

exit()通常是用在子程序中用来终结程序用的,使用后程序自动结束跳会操作系统。

但在如果把exit用在main内的时候无论main是否定义成void返回的值都是有效的,并且exit不需要考虑类型,exit(1)等价于return (1)
popy007 2006-02-05
  • 打赏
  • 举报
回复
线程在return后没有被killed掉?而exit(0)能够察觉到并且给予了正确的动作?

试试看是否是这样的问题!

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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