- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言中return,exit
(2011-04-23 01:14:13)
HYPERLINK javascript:; 转载
标签:
HYPERLINK /c.php?t=blogk=exitts=bpoststype=tag \t _blank exit
HYPERLINK /c.php?t=blogk=returnts=bpoststype=tag \t _blank return分类: HYPERLINK /s/articlelist_1732991662_14_1.html \t _blank C C语言中的return,exit,break,continue。前两个函数使用的同时通常都会带上程序退出时的状态码,标准C中有EXIT_SUCCESS和EXIT_FAILURE两个宏,位于/usr/include/stdlib.h中。是这样定义的的:#define EXIT_FAILURE 1#define EXIT_SUCCESS 0
一.exit函数的作用及其与_exit()函数的区别。有库文件中的定义可知:exit是一个库函数,exit(1)表示发生错误后退出程序,exit(0)表示正常退出。在stdlib.h中exit函数是这样子定义的:void exit(int status);这个系统调用是用来终止一个进程的,无论在程序中的什么位置,只要执行exit,进程就会从终止进程的运行。讲到exit这个系统调用,就要提及另外一个系统调用,_exit,_exit()函数位于unistd.h中,相比于exit(),_exit()函数的功能最为简单,直接终止进程的运行,释放其所使用的内存空间,并销毁在内存中的数据结构,而exit()在于在进程退出之前要检查文件的状态,将文件缓冲区中的内容写回文件。下面我们通过于printf这个操作缓冲区的函数结合来说明上面的情况:1.exit终止进程。#include stdlib.h#include stdio.h
main(){printf(output begin\n);exit(0);printf(output end\n);}执行gcc -o exit1 exit1.c生成exit1,执行,只会打印出output begin.2. exit将缓冲区内容写回文件。对应每一个打开的文件,在内存中都有一片缓冲区,每次读文件时,会多读出若干条记录,这样下次读文件时就可以直接从内存的缓冲区中读取,每次写文件的时候,也仅仅是写入内存中的缓冲区,等满足了一定的条件(达到一定数量,遇到特定字符(如换行符\n和文件结束符EOF)),再将缓冲区中的内容一次性写入文件,我们知道void exit(int status);exit()用来正常终结目前进程的执行,并把参数status返回给父进程,而进程所有的缓冲区数据会自动写回并关闭未关闭的文件。#include stdlib.h#include stdio.h
main(){printf(output begin\n);printf(content in buffer);exit(0);}$ ./exit1output begincontent in bufferprintf()会根据参数format字符串来转换并格式化数据,然后将结果写出到标准输出设备,直到出现字符串结束(\0)为止。可见,exit将未出现换行符的语句保存到标注输出文件。3._exit()不会执行清理I/O缓冲的操作。_exit()用来立刻结束目前进程的执行,并把参数status返回给父进程,并关闭未关闭的文件。此函数调用后不会返回,并且会传递SIGCHLD信号给父进程,父进程可以由wait函数取得子进程结束状态。#include stdio.h#include unistd.h
main(){printf(output begin\n);printf(content in buffer\n);_exit(0);}$ ./exit2output begin实际上因为第二条printf语句没有满足特定的条件,它们还只是保存在缓冲区内,这时我们用_exit()函数直接将进程关闭,缓冲区中的数据就会丢失,
和exit比较,return主要用于提供函数返回值,continue,break语句则大多数情况下用于循环中。许多朋友可能会将这三条语句与exit搞混,并且对这三个语句区分不清楚。
二.exit和return的区别与联系。
当然,在进程操作中,我们需要来区分一下exit和return。1.exit()结束当前进程/当前程序/,在整个程序中,只要调用exit就结
文档评论(0)