精华内容
下载资源
问答
  • C语言——exit()

    2016-12-10 11:10:08
    exit(0),exit(1),exit-1): ...exit是一个库函数,0即是正常退出, 非0即是非正常退出。...如果是一个子进程,可以使用GetExitCodeProcess获得退出代码,然后进行处理。...exit()使程序立即正常...开的文件,写出任何缓冲

    exit(0),exit(1),exit-1):


    exit是一个库函数,0即是正常退出, 非0即是非正常退出。

    如果是一个子进程,可以使用GetExitCodeProcess获得退出代码,然后进行处理。

     

    exit()使程序立即正常终止,如果状态值为0则认为正常退出,如果非零则说明存在执行错误。调用exit()清除和关闭所有打

    开的文件,写出任何缓冲输出,并且调用所有atexit()登记的程序终止函数。  

     

    相关函数:

       
      _exit()终止程序时,不关闭任何文件,不清除任何缓冲器,也不调用任何终止函数 

     


      abort()程序终止运行,不清除文件,返回到调用过程,一般用在防止程序失控,


    但是在面向对象的环境中由于exit()和abort()不销毁对象请不要在面向对象环境中使用abort()和exit()。


    展开全文
  • C语言exit()函数与_exit()函数的区别:  exit()函数在调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件;  _exit()直接使进程停止运行,清除其使用的内存空间,并销毁在内核中的各种数据结构。 ...
          C语言: exit()函数与_exit()函数的区别:
          exit()函数在调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件;
          _exit()直接使进程停止运行,清除其使用的内存空间,并销毁在内核中的各种数据结构。

          在Linux的标准函数库中,有一套称为“高级I/O”的函数,如printf、fopen、fread、fwrite,它们被称为“缓冲I/O(buffered I/O)”, 其特征是对应每一个找开的文件,在内存中都有一个缓冲区,每次读文件时,会先从文件中多读出若干条记录到缓冲区,这样下次读时就可以直接从内存的缓冲区中读取,每次写文件时,也是先入缓冲区,等满足一定的条件时(比如:达到一定数量,或遇到换行符'\n'和文件结束符EOF),再将缓冲区中的内容一次性写入文件,这样就可提高文件读写的速度。但请注意,如果有一些数据,我们认为已经写入了文件,但实际上因为没有满足特写的条件,它们还只是保存在缓冲区,这时如用_exit()函数直接关闭进程,缓冲区中的数据就会丢失。如想保证数据的完整性,一定要
    用exit()函数。


    下面程序是在Linux 2.6 下用gcc编译的

    例子1:
    #include <stdio.h>
    main(){
    printf("hello, world!\n");
    exit(0);
    printf("hello, sky~"); //不会显示
    }
    显示结果:hello, world!


    例子2:
    #include <stdio.h>
    main(){
    printf("hello, world!");
    _exit(0);
    printf("hello, sky~"); //不会显示
    }
    显示结果:什么也没有。

    分析结果:
    1. printf()函数在遇到换行符'\n'时才从缓冲区读取数据
    2. 在例子1中exit(0)在使程序退出之前,先将缓冲区中的内容写到标准输出;(此处的标准输出是指屏幕)

    3. 在例子2中_exit(0),直接将缓冲区里的内容清洗了。

    总结《Linux C编程 从初学到精通》

    展开全文
  • exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件exit是结束一个进程,它将删除进程使...

    1、exit函数和return函数的主要区别是:

    1)exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的。main函数结束时也会隐式地调用exit函数。exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件。exit是结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程;而return是返回函数值并退出函数。通常情况:exit(0)表示程序正常, exit(1)和exit(-1)表示程序异常退出,exit(2)表示表示系统找不到指定的文件。在整个程序中,只要调用exit就结束(当前进程或者在main时候为整个程序)。
    2)return是语言级别的,它表示了调用堆栈的返回;return( )是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。在多个进程时。如果有时要检测上个进程是否正常退出。就要用到上个进程的返回值,依次类推。而 exit是系统调用级别的,它表示了一个进程的结束 。
    3)exit函数是退出应用程序,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息。
    4)和机器和操作系统有关的一般是: 0为正常退出,非0为非正常退出;

    2、进程环境与进程控制

    exit(int n)其实就是直接退出程序,因为默认的标准程序入口为 int main(int argc, char** argv),返回值是int型的。一般在shell下面,运行一个程序,然后使用命令echo $?就能得到该程序的返回值,也就是退出值,在main()里面,你可以用return n,也能够直接用exit(n)来做。unix默认的正确退出是返回0,错误返回非0。理论上exit可以返回小于256的任何整数。返回的不同数值主要是给调用者作不同处理的。
    单独的进程是返回给操作系统的。如果是多进程,是返回给父进程的。父进程里面调用waitpid()等函数得到子进程退出的状态,以便作不同处理。根据相应的返回值来让调用者作出相应的处理。总的说来 ,exit()就是当前进程把控制权返回给调用该程序的程序,括号里的是返回值,告诉调用程序该程序的运行状态

    1)进程的开始:

    C程序是从main函数开始执行,原型如下:

    int main(int argc, char *argv[]);

    通常main的返回值是int型,正确返回0。如果main的返回值为void,某些编译器会给出警告,此时main的返回值通常是0。

    2)进程终止:

    C程序的终止分为两种:正常终止和异常终止。
    正常终止分为:return,exit,_exit,_Exit,pthreade_exit。异常中指分为:abort,SIGNAL,线程响应取消。
    主要说一下正常终止的前4种:即exit系列函数。

    #include <stdlib.h>  
    
    void exit(int status);
    void _Exit(int status);
    
    
    
    #include <unistd.h>   
    
    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 <stdlib.h>
    
    int atexit(void (*func)(void));

    其中参数是一个函数指针,指向终止处理函数,该函数无参无返回值。atexit函数本身成功调用后返回0。
    以下面的程序为例:

    
    #include<stdio.h>
    #include <stdlib.h>
    static void myexit1()  
    {  
         printf("first exit handler\n");  
    }  
    static void myexit2()  
    {  
         printf("second exit handler\n");  
    }  
    int main()  
    {  
         atexit(my_exit2);  
         atexit(my_exit1);   
         atexit(my_exit1);  
         printf("main is done\n");  
         return 0;  
    }  

    运行结果:

    $ ./a.out
    main is done
    first exit handler
    first exit handler
    second exit handler

    注意上面的结果,可以发现这些函数由exit按登记相反的顺序自动调用(先myexit1后myexit2)。如果同一函数登记多次, 也会被调用多次(如这里的myexit1)。程序退出的时候利用atexit函数调用了这些处理函数。但是如果用_exit()退出程序,则它不关闭任何文件,不清除任何缓冲器、也不调用任何终止函数!

    转自 https://www.cnblogs.com/noble/p/4144166.html

    展开全文
  • C语言中return和exit的区别 exit用于结束进程,返回的状态码是给操作系统使用或父进程使用的。return是堆栈返回,返回的值是给主调函数用的。主线程结束前会默认调用exit结束进程。 exit函数运行时首先会执行由...

    C语言中return和exit的区别

    exit用于结束进程,返回的状态码是给操作系统使用或父进程使用的。return是堆栈返回,返回的值是给主调函数用的。主线程结束前会默认调用exit结束进程。

    exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数 tmpfile()创建的临时文件。exit是结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程,而return是返回函数值并退出函数。

    转载于:https://www.cnblogs.com/qingergege/p/7833204.html

    展开全文
  • void exit(int)函数 简而言之exit()函数是直接结束进程,作用等同于在main()下的return函数,将一个int n(&lt;256)返回给os系统。 exit(0)表示正常退出;...exit(2)表示系统找不到指定的文件。 ...
  • C语言文件操作总结

    2021-01-20 06:18:02
    关于C语言文件操作之前我也写过一篇博客来介绍,但是当时写的很不全面,只是简单的使用了一下 ,今天再从新学习一下。 1、文件的写 首先还是先看一个简单的例子: include int main() { FILE *fp; //声明一个...
  • 关于C语言文件操作之前我也写过一篇教程来介绍,但是当时写的很不全面,只是简单的使用了一下 ,今天再从新学习一下。 1、文件的写 首先还是先看一个简单的例子: include int main() { FILE *fp; //声明一个...
  • C语言中的EXIT_FAILURE和EXIT_SUCCESS

    千次阅读 2019-04-01 17:44:13
    EXIT_FAILURE和EXIT_SUCCESS是C语言头文件库中定义的一个符号常量,在vc++6.0下头文件stdlib.h中定义如: #define EXIT_FAILURE 1 #define EXIT_SUCCESS 0 EXIT_FAILURE 可以作为exit()的参数来使用,表示没有成功的...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include#include#define N 1000int split(char *filename,char words[][20]){FILE *fp;int i=0,j=0,k;char ch;if((fp=fopen(filename,"r"))==NULL){printf...exit(1);}...
  • C语言中的exit()函数

    2021-04-07 21:38:19
    C语言中的exit()函数 exit函数 函数名: exit() 所在头文件:stdlib.h 功 能: 关闭所有文件,终止正在执行的进程。 exit(1)表示异常退出.这个1是返回给操作系统的。 exit(x)(x不为0)都表示异常退出 exit(0)表示...
  • C语言exit函数(转载)

    2021-01-04 22:14:48
    功能:关闭所有文件,终止正在执行的进程。exit(1)表示异常退出这个1是返回给操作系统的。 exit(x)(x不为0)都表示异常退出 exit(0)表示正常退出exit()的参数会被传递给一些操作系统,包括uni, Linux,和MS DOS,以供其他...
  • 在Ubuntu20.0版本中,不知道C语言的printf和exit在哪个库文件里。 而且,我在Ubuntu20.0中,找不到静态库文件.a在哪 动态库文件我知道在/usr/lib中,后缀是.so 还有,有没有方法查询相应的C语言库函数在...
  • C语言文件复制

    2018-03-14 18:18:40
    直接看代码啦:#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; int main(int argc,char *argv[]) { FILE *fp_input,*fp_output; int ch; if(argc !... exit(EXIT_FAILURE)...
  • C语言文件详解 引入: 主要文件操作包括以下函数: 打开文件 关闭所有打开的文件并结束程序 从文件指针指向的文件流中读取一个字符 将指定字符写到文件指针所指向的当前位置上 关闭文件流释放文件指针 fopen...
  • C语言文件操作随笔

    2018-07-25 22:44:00
    1、return 与exit的区别 在main中return 与exit 两个返回是等效的,都是结束进程。 但是如果二级调用中return只是返回上一级调用,但是...//文件输入的下一个位置  int_cnt;//当前缓冲区的相对位置  char*_...
  • C语言文件操作

    2007-08-29 17:40:00
    C语言文件操作实例 int a[] = {1,2,3,4,5,6,7,8,9,0}; FILE *fp = fopen("file.txt","wb"); if(!fp){ printf("file open error"); exit(-1); } fwrite
  • #include#includeint main(){FILE *fp;FILE *fp1;char ch;char ch1;if((fp=fopen("file1.txt","w"))==NULL){printf("cannot open this file!...exit(0);}while((ch=getchar())!='\n')fputc(ch,fp);fclose(fp);/*if...
  • C语言文件的读写

    2017-09-01 12:43:00
    //文件的读取 这部分是获取命令行参数来读取 int ch; FILE *fp; unsigned long count = 0; if(argc!=2) { printf("没有参数\n"); exit(EXIT_FAILURE); } if((fp=fopen(argv[1],...
  • C语言文件复制_fgets

    2021-02-03 17:20:16
    int main() { char filename[10],filename2[10],str[60]; printf("请输入你要复制的文本:\n"); gets(filename); printf("请输入你要新建的... printf("无法打开此文件%s\n",filename); exit(0); } if((out=f
  • * #include<stdio.h> void main {FILE *fp char str[81] if(fp=fopen(aa.txt,rt)==NULL) {printf(Cannot open file) getchar)exit(1) } whilefgets(str81fp!=NULL putsstr fclosefp } 例: 利用函数fgets,将文本文件...
  • c语言文件函数的使用

    2018-05-31 20:07:02
    //2018/4/21 文件的使用 #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt;//exit #include&lt;string.h&gt; #include&lt;ctype.h&gt; #define N 100 //以下函数是什么意思? /*...
  • 详解C语言中return与exit的区别 1,exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的。main函数结束时也会隐式地调用exit函数。exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些...
  • c.C语言文件学习详解

    2020-06-21 19:06:35
    文件 分为两种文件: ... exit(0); } fclose feof() 字符输入函数fgetc()&&fputc() fgetc() fputc() 字符串fgets() fputs() fgets() fputs() 格式化输入输出 fprintf() fscanf()
  • 文件打开失败!\n"); return 0; } printf("请输入学生数量:\n"); scanf("%d",&n); FileWrite(fp,n); FileRead_W(fp,n); fclose(fp); return 0; } void FileWrite...
  • 创建文件inflie.c #include<stdio.h> #include<stdlib.h> int main() { FILE *infp,*outfp; char ch; if((infp=fopen("infile.c","r"))==NULL) { printf("cannot open infile.c.\n"); exit(0);...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 637
精华内容 254
关键字:

c语言文件exit

c语言 订阅