2018-10-17 10:21:58 qq_38619183 阅读数 175
  • Linux系统编程、网络编程》第5章 进程控制

    课程内容: 进程与程序、进程PID与三个特殊进程、fork函数的作用、父子进程对文件的共享、execve加载函数、system函数、进程的资源回收、wait函数、进程状态、java进程、进程关系、守护进程,return/exit/_exit、环境变量表、环境变量API、C程序的内存空间布局、C库。

    271 人正在学习 去看看 张先凤

linux exit使用

作用

  • 终止进程的执行
  • exit(0) 正常退出, exit(1)异常退出
  • exit()函数没有返回值
    在这里插入图片描述

结合子进程使用

  • 通常在子进程的末尾使用exit()函数, 使子进程自我终止, 父进程调用wait函数等待被通知子进程的结束

exit 的操作过程

  1. 关闭软中断
  2. 回收资源
  3. 写记账信息
  4. 置进程为"僵死状态" Zombie
2019-04-22 18:18:32 qq_44884300 阅读数 386
  • Linux系统编程、网络编程》第5章 进程控制

    课程内容: 进程与程序、进程PID与三个特殊进程、fork函数的作用、父子进程对文件的共享、execve加载函数、system函数、进程的资源回收、wait函数、进程状态、java进程、进程关系、守护进程,return/exit/_exit、环境变量表、环境变量API、C程序的内存空间布局、C库。

    271 人正在学习 去看看 张先凤

首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的。教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转到教程

                用途说明
exit命令用于退出当前shell,在shell脚本中可以终止当前脚本执行
 
常用参数
格式:exit n
退出。设置退出码为n
 
格式:exit
退出。退出码不变,即为最后一个命令的退出码
 
格式:$?
上一个命令的退出码

退出码(exit status或exit code)的约定
0表示成功(Zero - Success)
非0表示失败(Non-Zero  - Failure)
2表示用法不当(Incorrect Usage)
127表示命令没有找到(Command Not Found)
126表示不是可执行的(Not an executable)
>=128 信号产生


原贴地址:http://blog.163.com/bobile45@126/blog/static/96061992201311712658570/
           

浏览人工智能教程

2012-04-18 13:32:56 brucexu1978 阅读数 380
  • Linux系统编程、网络编程》第5章 进程控制

    课程内容: 进程与程序、进程PID与三个特殊进程、fork函数的作用、父子进程对文件的共享、execve加载函数、system函数、进程的资源回收、wait函数、进程状态、java进程、进程关系、守护进程,return/exit/_exit、环境变量表、环境变量API、C程序的内存空间布局、C库。

    271 人正在学习 去看看 张先凤

exit会检查输入输出, 文件等的打开情况, 把缓冲区的内容写回文件, 就是清理i/o。

 

而_exit则直接释放这些东西。

 

下面的例子说明了这个问题:

/*exit.c*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
  printf("Using exit...\n");
  printf("This is the content in buffer");
  exit(0);
}
打印信息:
Using exit...
This is the content in buffer
说明缓冲区里的内容能正常输出
/*_exit.c*/
#include<stdio.h>
#include<unistd.h>
{
  printf("Using exit...\n");
  printf("This is the content in buffer");
  _exit(0);
}
打印信息:Using _exit...
说明_exit无法输出缓冲区里的记录
2017-04-25 23:07:58 ZoctopusD 阅读数 385
  • Linux系统编程、网络编程》第5章 进程控制

    课程内容: 进程与程序、进程PID与三个特殊进程、fork函数的作用、父子进程对文件的共享、execve加载函数、system函数、进程的资源回收、wait函数、进程状态、java进程、进程关系、守护进程,return/exit/_exit、环境变量表、环境变量API、C程序的内存空间布局、C库。

    271 人正在学习 去看看 张先凤

在Linux中函数的退出有以下8种情况,其中前5种为正常情况,后3种为异常情况

1 从main函数返回;
2 调用exit函数;
3 调用_exit或_Exit;
4 最后一个线程从启动例程返回;
5 最后一个线程调用pthread_exit;
6 调用abort函数;
7 接到一个信号并终止;
8 最后一个线程对取消请求做出响应

exit函数与_exit函数的区别

exit:#include<stdlib.h>

_exit:#include<unistd.h>

_exit()函数:直接使进程停止运行,清除其使用的内存空间,并销毁其在内核中的各种数据结构;

exit()函数则在这些基础上作了一些包装,在执行退出之前加了若干道工序。

exit()函数与_exit()函数最大的区别就在于 exit()函数在调用 exit 系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件。

exit()函数示例:

代码:

int main()
 {
     printf("hello world!\n");
     sleep(2);
     exit(123);
}



_exit()函数示例:_exit没有刷新缓冲区

代码:

int main()
 {
     printf("hello world!");
     sleep(2);
     _exit(123);
}


atexit函数

  函数名: atexit

 
  头文件:#include<stdlib.h>
 
  功 能: 注册终止函数(即main执行结束后调用的函数)
 
  用 法: int atexit(void (*func)(void));

在一个程序中最多可以用atexit()注册32个处理函数,这些处理函数的调用顺序与其注册的顺序相反,也即最先注册的最后调用,最后注册的最先调用。

以下程序验证以下atexit函数的调用顺序:

  1 #include<stdio.h>
  2 #include<sys/stat.h>
  3 #include<sys/types.h>
  4 #include<fcntl.h>
  5 #include<stdlib.h>
  6 #include<unistd.h>
  7 #include<string.h>
  8 void fun1()
  9 {
 10     printf("i am fun1\n");
 11 }
 12 void fun2()
 13 {
 14     printf("i am fun2\n");
 15 }
 16 void fun3()
 17 {
 18     printf("i am fun3\n");
 19 }
 20 void fun4()
 21 {
 22     printf("i am fun4\n");
 23 }
24 void fun5()
 25 {
 26     printf("i am fun5\n");
 27 }
 28 int main()
 29 {
 30     atexit(fun1);
 31     atexit(fun2);
 32     atexit(fun3);
 33     atexit(fun4);
 34     atexit(fun5);
 35     exit(0);
 36 }



                                
2017-11-27 21:25:35 Z_Dream_ST 阅读数 247
  • Linux系统编程、网络编程》第5章 进程控制

    课程内容: 进程与程序、进程PID与三个特殊进程、fork函数的作用、父子进程对文件的共享、execve加载函数、system函数、进程的资源回收、wait函数、进程状态、java进程、进程关系、守护进程,return/exit/_exit、环境变量表、环境变量API、C程序的内存空间布局、C库。

    271 人正在学习 去看看 张先凤

exit与_exit函数都是进程正常退出的函数


exit函数格式:

#include <stdlib.h>

void exit(int status);


_exit函数格式:

#include <unistd.h>

void _exit(int status);


相同点:

1 这两个函数都是正常退出进程

2 不论调用是否成功,都没有返回信息


不同点:

1 exit函数会对输入输出流进行判断,释放所占用的资源以及清空缓冲区,在终止进程时会关闭所有文件,清空缓冲区

2 _exit函数则不具备刷新缓冲区等操作的功能


总结:所有fork与vfork创建进程的函数,尽量不要使用exit函数终止子进程


linux exit函数学习

阅读数 251

Linux命令:exit

阅读数 104

没有更多推荐了,返回首页