发布网友 发布时间:2022-04-23 14:26
共1个回答
热心网友 时间:2023-10-18 08:15
_exit 和 exit 最主要的区别有两个,
1、 _exit 不会flush 任何标准输入输出 (stdio)流,即通过printf/fprintf 这类调用产生的尚未写入设备仍在缓冲中的数据都会丢弃
2、 _exit 时不会调用任何通过 atexit/on_exit 注册的回调函数
printf 如果不加 \n, 则信息是不会立刻打印出来的 (由于标准输出是按行缓冲的,具体细节这里不展开,自己去查标准输入输出 stdio 的缓冲机制),那么根据上面说的第一条, _exit 时打印信息会丢失,而 exit 不会。 如果有 \n ,则直接打印出来,此时 exit/_exit 无区别
另,一般统一应该用 exit, 除非你有非常特殊的需求,知道自己在干什么,且清楚 exit/_exit 的区别,才可以用 _exit
热心网友 时间:2023-10-18 08:15
_exit 和 exit 最主要的区别有两个,
1、 _exit 不会flush 任何标准输入输出 (stdio)流,即通过printf/fprintf 这类调用产生的尚未写入设备仍在缓冲中的数据都会丢弃
2、 _exit 时不会调用任何通过 atexit/on_exit 注册的回调函数
printf 如果不加 \n, 则信息是不会立刻打印出来的 (由于标准输出是按行缓冲的,具体细节这里不展开,自己去查标准输入输出 stdio 的缓冲机制),那么根据上面说的第一条, _exit 时打印信息会丢失,而 exit 不会。 如果有 \n ,则直接打印出来,此时 exit/_exit 无区别
另,一般统一应该用 exit, 除非你有非常特殊的需求,知道自己在干什么,且清楚 exit/_exit 的区别,才可以用 _exit