linux中,exit与_exit的printf语句加上"\n"与不加有何不同,原因是什么

发布网友 发布时间: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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com