网站大量收购闲置独家精品文档,联系QQ:2885784924

C语言中returnexit.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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); } $ ./exit1 output begin content in buffer printf()会根据参数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); } $ ./exit2 output begin 实际上因为第二条printf语句没有满足特定的条件,它们还只是保存在缓冲区内,这时我们用_exit()函数直接将进程关闭,缓冲区中的数据就会丢失, 和exit比较,return主要用于提供函数返回值,continue,break语句则大多数情况下用于循环中。许多朋友可能会将这三条语句与exit搞混,并且对这三个语句区分不清楚。 二.exit和return的区别与联系。 当然,在进程操作中,我们需要来区分一下exit和return。 1.exit()结束当前进程/当前程序/,在整个程序中,只要调用exit就结

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档