| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > exit, close вопросы на понимание |
| Автор: DissDoc 6.6.2007, 09:01 | ||||||
| Доброе время суток всем. После начала разбора системных вызовов появились еще некоторые вопросы. Собственно код мне не нужен, если нетрудно - объясните пожалуйста логику вызова функций. 1. В случае работы с dub
Почему здесь close(0). Т.е. почему именно 0,а не что-то другое? (да что может быть там другое?) 2. С работой fork() a)
b)
Вот в этих случаях почему 0 в exit? Я пробовал - вижу что происходит! Но exit и close никак не пойму ((( |
| Автор: DissDoc 6.6.2007, 09:21 |
| Что значит exit(0); close(0); И еще я где-то еще видел exit(4, 2); Вопрос тот же - что значит? |
| Автор: HappyCoder 6.6.2007, 09:22 | ||
| Сам не понимаю, почему close(0). close закрывает дескриптор файла - значит, надо передавать этой функции дескрипторы. Проверь через perror("close"); exit(0) - завершение процесса произошло по нормальной причине exit(1) или exit(-1) - процесс завершился с ошибкой По поводу exit подробней написано в
|
| Автор: MAKCim 6.6.2007, 09:28 |
1. exit(errno) 2. отрицательные коды ошибок используются в ядре Добавлено через 2 минуты и 35 секунд exit(0) - завершение процесса с нулевым кодом возврата + вызов всех функций, которые были зарегистрированы средой close(0) - в общем смысле - уменьшение счетчика ссылок на открытый файл и его удаление в случае если этот счетчик после очередного уменьшения стал нулевым |
| Автор: BlackStar 7.6.2007, 11:49 |
| man stdin stdin = 0 stdout = 1 stderr = 2 close(0) == close(stdin) Зачем он нужен в приведенном куске кода, понятия не имею. |
| Автор: MAKCim 7.6.2007, 12:11 |
stdin имеет тип FILE* так что close(STDIN_FILENO) или fclose(stdin) |
| Автор: Nil 7.6.2007, 12:34 |
| MAKCim, А разве STDIN_FILENO не макрос который в итоге даст тот же 0 ? ---- Добавлено: Прошу прощения, не верно прочитал предыдущий пост. |