В чем разница между выходом(), _Exit() и _Exit() в C?Выход функции в C
Как я могу решить, какой использовать?
На ударе,
человек 2 выхода
дал мне страницу _exit (2), тогда как
человек 3 выхода
дал страницу ВЫХОД (3).
В чем разница между выходом(), _Exit() и _Exit() в C?Выход функции в C
Как я могу решить, какой использовать?
На ударе,
человек 2 выхода
дал мне страницу _exit (2), тогда как
человек 3 выхода
дал страницу ВЫХОД (3).
exit()
завершение после очистки.
_exit()
завершение сразу после звонка.
Если у вас есть поврежденный стек, а функция exit()
называется программой, может закрыться с ошибкой сегментации, если вы используете _exit()
, выйдите из программы в быстром режиме.
От http://msdn.microsoft.com/en-us/library/6wdz5232.aspx у вас есть
exit()
- Выполняет комплексные процедуры терминации библиотеки C, завершает процесс, и выходит с прилагаемым кодом состояния.
_exit()
- Выполняет быстрые процедуры завершения библиотеки C, завершает процесс и завершает работу с кодом состояния поставки.
_cexit()
- Выполняет полные процедуры завершения библиотеки C и возвращает вызывающему абоненту, но не завершает процесс.
_c_exit()
- Выполняет быстрые процедуры завершения библиотеки C и возвращает вызывающему абоненту, но не завершает процесс.
От человека:
выход:
Всех функций, зарегистрированных atexit (3) и on_exit (3) называется, в обратном порядке их регистрации ... Весь открытый STDIO (3) потоки промываются и закрываются. Файлы, созданные tmpfile (3), удаляются._exit:
Функция _exit() похожа на exit (3), но не вызывает никаких функций , зарегистрированных с помощью atexit (3) или on_exit (3). Является ли он сбросом стандартных буферов ввода-вывода и удаляет временные файлы, созданные с помощью tmpfile (3), - это , зависящий от реализации. С другой стороны, _exit() не закрывать открытые дескрипторы файлов ...
1.exit(): это очистка работа как закрытие дескриптора файла, файловый поток и так далее, 2._exit(): это не очистка работы, как закрытие дескриптора файла, поток файла и т. д.
Это основное отличие функций exit() и _exit().
утра я выпрямляется ур ответ
_exit закрывает дескрипторы файлов. – adf88
Нет, ядро. _exit просто завершает процесс. Основная особенность _exit заключается в том, что он ничего не говорит о том, чтобы ядро завершило процесс. –
Нормативный в C99 являются exit
и _Exit
.
Различие между ними состоит в том, что exit
также выполняет обработчики, которые могут быть зарегистрированы с atexit
и закрывает потоки и т.д., тогда как _Exit
не вызывать atexit
процедуры и могут или не могут должным образом закрыть потоки.
_exit
является POSIX и имеет схожие свойства как _Exit
с той разницей, что гарантировано закрыть потоки должным образом.
Таким образом, всякий раз, когда вы можете использовать exit
, это самый чистый путь к прекращению.
ОК, но какая разница между полным и быстрым завершением? – adf88
, пожалуйста, уточните, что следует использовать, когда. – 2010-09-07 12:12:57
Вызов 'exit()'. Остальные являются деталями реализации и, как правило, не так полезны вне определенных редких условий при построении каркасов. – RBerteig