- 浏览: 153587 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
lyaqys:
lz实现的OptimisticExclusiveLock有点问 ...
java park/unpark 【java并发】基于JUC CAS原理,自己实现简单独占锁
#define __NR_exit 1
#define __NR__exit __NR_exit /* 摘自文件include/asm-i386/unistd.h*/
"__NR_"是在Linux的源码中为每个系统调用加上的前缀,请注意第一个exit前有2条下划线,第二个exit前只有1条下划线。
Linux核心还提供了一些C语言函数库,这些库对系统调用进行了一些包装和扩展,因为这些库函数与系统调用的关系非常紧密,所以习惯上把这些函数也称为系统-调用。#define这句只能说明内核里的两个系统调用_exit和exit相同,但其封装后对应的C库函数_exit()和exit()是不同的。
exit()函数定义在stdlib.h中,而_exit()定义在unistd.h中。
_exit()函数的作用最为简单:直接使进程停止运行,清除其使用的内存空间,并销毁其在内核中的各种数据结构;exit()函数则在这些基础上作了一些包装-,在执行退出之前加了若干道工序,也是因为这个原因,有些人认为exit已经不能算是纯粹的系统调用。
exit()函数与_exit()函数最大的区别就在于exit()函数在调用exit系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件,即所谓的"清理I/O缓冲"。
‘exit()’与‘_exit()’有不少区别在使用‘fork()’,特别是‘vfork()’时变得很突出。
‘exit()’与‘_exit()’的基本区别在于前一个调用与实施库里用户状态结构(user-mode constructs)有关的清除工作(clean-up),而且调用用户自定义的清除程序 (译者注:自定义清除程序由atexit函数定义,可定义多次,并以倒序执行),相对 应,后一个函数只为进程实施内核清除工作。
在由‘fork()’创建的子进程分支里,正常情况下使用‘exit()’是不正确的,这是因为使用它会导致标准输入输出(译者注:stdio: Standard Input Output)的缓冲区被清空两次,而且临时文件被出乎意料的删除(译者注:临时文件由tmpfile函数创建在系统临时目录下,文件名由系统随机生成)。在C++程序中情况会更糟,因为静态目标(static objects)的析构函数(destructors)可以被错误地执行。(还有一些特殊情况,比如守护程序,它们的父进程需要调用‘_exit()’而不是子进程;适用于绝大多数情况的基本规则是,‘exit()’在每一次进入‘main’函数后只调用一次。)
在由‘vfork()’创建的子进程分支里,‘exit()’的使用将更加危险,因为它将影响父进程的状态。
vfork与fork的区别
vfork与fork主要有三点区别:
.fork():子进程拷贝父进程的数据段,堆栈段
vfork():子进程与父进程共享数据段
.fork()父子进程的执行次序不确定vfork 保证子进程先运行,在调用 exec 或 exit 之前与父进程数据是共享的,在它调用 exec或 exit 之后父进程才可能被调度运行。
.vfork()保证子进程先运行,在它调用 exec 或 exit 之后父进程才可能被调度运行.如果在调用这两个函数之前子进程依赖于父进程的进一步动作,则会导致死锁。
#include <stdlib.h>
函数名: abort
功 能: 异常终止一个进程
用 法: void abort(void);
abort()是使异常程序终止,同时发送SIGABRT信号给调用进程。
程序例:
#include <stdio.h>
#include <stdlib.h>
void main( void )
{
FILE *stream;
if( (stream = fopen( "NOSUCHF.ILE", "r" )) == NULL )
{
perror( "Couldn't open file" );
abort();
}
else
fclose( stream );
}
输出:
Couldn't open file: No such file or directory
abnormal program termination
#define __NR__exit __NR_exit /* 摘自文件include/asm-i386/unistd.h*/
"__NR_"是在Linux的源码中为每个系统调用加上的前缀,请注意第一个exit前有2条下划线,第二个exit前只有1条下划线。
Linux核心还提供了一些C语言函数库,这些库对系统调用进行了一些包装和扩展,因为这些库函数与系统调用的关系非常紧密,所以习惯上把这些函数也称为系统-调用。#define这句只能说明内核里的两个系统调用_exit和exit相同,但其封装后对应的C库函数_exit()和exit()是不同的。
exit()函数定义在stdlib.h中,而_exit()定义在unistd.h中。
_exit()函数的作用最为简单:直接使进程停止运行,清除其使用的内存空间,并销毁其在内核中的各种数据结构;exit()函数则在这些基础上作了一些包装-,在执行退出之前加了若干道工序,也是因为这个原因,有些人认为exit已经不能算是纯粹的系统调用。
exit()函数与_exit()函数最大的区别就在于exit()函数在调用exit系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件,即所谓的"清理I/O缓冲"。
‘exit()’与‘_exit()’有不少区别在使用‘fork()’,特别是‘vfork()’时变得很突出。
‘exit()’与‘_exit()’的基本区别在于前一个调用与实施库里用户状态结构(user-mode constructs)有关的清除工作(clean-up),而且调用用户自定义的清除程序 (译者注:自定义清除程序由atexit函数定义,可定义多次,并以倒序执行),相对 应,后一个函数只为进程实施内核清除工作。
在由‘fork()’创建的子进程分支里,正常情况下使用‘exit()’是不正确的,这是因为使用它会导致标准输入输出(译者注:stdio: Standard Input Output)的缓冲区被清空两次,而且临时文件被出乎意料的删除(译者注:临时文件由tmpfile函数创建在系统临时目录下,文件名由系统随机生成)。在C++程序中情况会更糟,因为静态目标(static objects)的析构函数(destructors)可以被错误地执行。(还有一些特殊情况,比如守护程序,它们的父进程需要调用‘_exit()’而不是子进程;适用于绝大多数情况的基本规则是,‘exit()’在每一次进入‘main’函数后只调用一次。)
在由‘vfork()’创建的子进程分支里,‘exit()’的使用将更加危险,因为它将影响父进程的状态。
vfork与fork的区别
vfork与fork主要有三点区别:
.fork():子进程拷贝父进程的数据段,堆栈段
vfork():子进程与父进程共享数据段
.fork()父子进程的执行次序不确定vfork 保证子进程先运行,在调用 exec 或 exit 之前与父进程数据是共享的,在它调用 exec或 exit 之后父进程才可能被调度运行。
.vfork()保证子进程先运行,在它调用 exec 或 exit 之后父进程才可能被调度运行.如果在调用这两个函数之前子进程依赖于父进程的进一步动作,则会导致死锁。
#include <stdlib.h>
函数名: abort
功 能: 异常终止一个进程
用 法: void abort(void);
abort()是使异常程序终止,同时发送SIGABRT信号给调用进程。
程序例:
#include <stdio.h>
#include <stdlib.h>
void main( void )
{
FILE *stream;
if( (stream = fopen( "NOSUCHF.ILE", "r" )) == NULL )
{
perror( "Couldn't open file" );
abort();
}
else
fclose( stream );
}
输出:
Couldn't open file: No such file or directory
abnormal program termination
发表评论
-
c语言链表实现学生管理
2013-10-28 14:13 901#include<stdio.h> #includ ... -
简单的linux -c http-client
2013-10-23 15:35 4726#include<stdio.h> #includ ... -
毗连“"aa"”和“"bb"”不能给出一个有效的预处理标识符,gcc编译错误表
2013-10-01 18:54 2995gcc bug : ##’ cannot appear at ... -
负数转化为整数
2013-10-01 12:02 1354负数转化为整数 int a = -1321313; 12 ... -
STDIN_FILENO的作用及与stdin 的区别
2013-09-08 14:48 906if(NULL == fgets(msg,100,stdi ... -
linux进程cpu资源分配命令nice,renice,taskset
2013-09-04 14:03 1163nice,renice 指定进程运行的优先级 taskset ... -
c++ 动态内存分配
2013-08-28 22:35 845先看一段代码: [cpp] view plaincopy ... -
文件结束符EOF,system("stty raw")
2013-08-14 10:47 1557>> 关于文件结束符EOF EOF 是 End O ... -
c 专家编程
2013-08-13 17:06 690总结: -2> int * a = NUL ... -
Linux中线程与CPU核的绑定
2013-08-09 15:15 2128最近在对项目进行性能 ... -
建议编译的时候加警告 atof
2013-08-07 20:46 712#include <stdlib.h> ... -
feodra 17 安装 chrome
2013-08-04 01:35 7681: 下载:http://www.google.cn/chro ... -
Sudo提权出现:xx用户不在 sudoers 文件中
2013-08-03 20:22 913Sudo提权出现:xx用户不在 sudoers 文件中 症状 ... -
c语言api
2013-07-31 21:06 678原型:extern int isalnum(int c); 用 ... -
c 语言无符号类型使用注意,类型升级
2013-07-30 14:37 626#define SS sizeof(int) 5 int ... -
select,epoll,poll比较
2013-07-28 17:13 684select,poll,epoll简介 se ... -
gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数
2013-07-22 22:45 902我们用gcc编译程序时,可能会用到“-I”(大写i),“-L” ... -
Linux下如何将进程绑定在特定的CPU上运行
2013-07-22 10:52 990Linux下如何将进程绑定在特定的CPU上运行? 以root用 ... -
linux运维常用命令
2013-07-13 20:40 886推荐一个实用命令:awk '{x+=$2} END {prin ... -
linux 进程通信方式
2013-07-07 20:46 621# 管道( pipe ):管道是一种半双工的通信方式,数据只能 ...
相关推荐
regular LDPC EXIT EXIT_chart EXIT_chart_regular
为了获取这些文件的具体内容和与`exit`过程的关联,你需要解压`EXIT.zip`并查看其中的文件。 总结来说,`exit`是MATLAB中一个强大的控制流工具,它能帮助我们精确地管理程序的结束和状态。结合`onCleanup`、`try-...
标题中的"Z_FIND_USEREXIT_SAP增强查找Z_USEREXIT_" 提到的是一个专门用于寻找和管理SAP用户出口(User Exits)的工具。用户出口是SAP提供的一种预定义的扩展点,允许开发人员在不修改标准代码的情况下插入自定义...
title: exit和_exit的区别categories: Linux系统编程exit与_exit最大的区别就在于:exit在执行之前,要清理I/O缓冲区中
这个“EXIT_TURBO.rar”压缩包包含了一系列与Turbo码 EXIT 图迭代相关的程序和数据文件,适合于深入理解和研究Turbo码的工作原理。 在Turbo码中,有两个基本的组件:交织器和并行或串行的涡轮编码器。交织器的作用...
与传统的二进制LDPC码相比,非二进制LDPC码允许在更广泛的代数结构上操作,如GF(2^m)域,从而提供更高的编码效率和更优的性能。本篇将深入探讨非二进制LDPC码的非二进制EXIT(Iterative Exchange of Information ...
在本案例中,具体涉及的用户退出点是"USEREXIT_CHECK_VBEP"和"USEREXIT_SAVE_DOCUMENT_PREPARE",这两个都是与销售订单处理相关的。 USEREXIT_CHECK_VBEP是在创建或更改销售订单时调用的用户退出,特别是在执行检查...
本篇文章将深入探讨标题“Protograph EXIT_chart-master_protograph_potatoesxu5_voyage1m6_ld”所涉及的知识点,并结合压缩包内的文件"Protograph_EXIT_chart-master"进行阐述。 一、Protograph概念 Protograph是...
这些文件可能包括了STM32的初始化代码、中断服务函数定义以及与按键相关的逻辑。通过阅读和理解这些代码,我们可以学习到STM32的GPIO中断配置、中断服务函数的编写技巧,以及如何将这些组件整合到实际应用中。 总的...
**EXIT图表(Iterative Decoding EXIT Chart)**是评估和设计LDPC码迭代解码性能的一种强大工具。 **LDPC码的核心概念:** 1. **稀疏矩阵**:LDPC码的定义基于一个稀疏的校验矩阵,其中大部分条目为0,只有少数为1...
总结来说,EXIT分析是LDPC码性能评估和优化的关键工具,它通过直观的图形方式揭示了信道条件与解码过程之间的关系,帮助我们理解并提升LDPC码的解码效率。在设计和实现高效LDPC编码系统时,EXIT分析是不可或缺的一...
"STM32Exit_stm32_EXIT_"这个标题暗示了我们主要讨论的是STM32微控制器中的退出(EXIT)操作,可能是指系统或中断服务例程的退出流程。描述中提到的基础例程和对初学者的帮助,表明我们将探讨一个适合新手学习的STM...
标题中的"EXIT_EXITChart_EXIT_源码.rar"可能是一个源代码压缩包,通常包含某个程序或项目的源代码文件。从这个标题来看,我们推测这可能是关于一个名为"EXIT"的项目,可能涉及到图表(Chart)的创建或处理,并且与...
Exit9_task2(1).c
在 Linux 内核中,__init__ 和 __exit__ 是两个特殊的宏,用于告诉内核在静态编译时对这些函数进行特殊处理。当内核编译成模块时,这两个宏起着关键的作用。 __init__ 宏 __init__ 宏用于标记某些函数或初始化数据...
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别 os._exit() 和 sys.exit() os._exit() vs sys.exit() 概述 Python的程序有两中退出方式:os._exit(), sys.exit()。本文介绍这两种方式的...
在本资料包“wangs.rar_exit_ldpc_元胞自动机_元路径”中,重点探讨的是元胞自动机在模拟行人流运动中的应用,以及与之相关的退出策略(exit strategy)和低密度奇偶校验码(Low-Density Parity-Check,LDPC)。...
通过"EXIT_EXITChart_EXIT_源码.zip",我们可以深入研究上述各个方面的实现细节,了解如何设计和实现一个高效、用户友好的图表退出系统。无论是对于初学者还是经验丰富的开发者,这样的源码都是一份宝贵的教育资源。
综上,"OpenVent_CPAP_pump_exit_open_pumpexit_" 代表的是一款注重用户维护和卫生安全的开源CPAP设备,它的设计和制造考虑到了实际使用中的可操作性与可维护性,体现了现代医疗设备结合先进科技与人性化设计的理念...