Size: a a a

2020 June 17

t

ttldtor in codingteam
ничего нового
источник

💮

💮 in codingteam
*точнее, «А тебе не достаточно отличать ноль от всего остального?»
источник

c

codingteam@cjr in codingteam
Minoru
@pink_snow: вобщем-то да, было бы достаточно отличать ноль ото всего остального — но с wait() это невозможно, т.к. 0xff00 тоже выглядит как ноль
источник

💮

💮 in codingteam
А такое может вернуться?
источник

c

codingteam@cjr in codingteam
Minoru
@pink_snow: вообще это решается с помощью «нового» сисколла waitid, но он, похоже, реализован только в Linux и, кажется, в NetBSD. Во FreeBSD он тоже есть, но якобы только в Linux compatibility layer. Ну и, повторюсь, шеллы обязаны пользоваться нижними восемью битами, поэтому использовать waitid() значит удивить пользователя
источник

c

codingteam@cjr in codingteam
Minoru
@pink_snow: теоретически может вернуться вообще любое значение из области определения int
источник

c

codingteam@cjr in codingteam
Minoru
@pink_snow: винда, кстати, возвращает все 32 бита безо всяких костылей!
источник

💮

💮 in codingteam
Теоретически — это на гипотетических системах?
источник

c

codingteam@cjr in codingteam
Minoru
@pink_snow: нет, это «от гипотетических программ». Ну я же не знаю, что там пользователь запускать будет
источник

💮

💮 in codingteam
М… А это не ядро назначает?
источник

c

codingteam@cjr in codingteam
Minoru
от системы это не зависит. В стандарте Си (я посмотрел на C89 и драфт C18) написано, что return в конце main() равноценно вызову exit(), а для exit() определены 0, EXIT_SUCCESS и EXIT_FAILURE. Все остальные значения приводят к implementation-defined behavior
источник

c

codingteam@cjr in codingteam
Minoru
@pink_snow: э-э-э? Нет, это программист назначает, когда пишет return в main() или вызывает exit() посреди программы
источник

c

codingteam@cjr in codingteam
Minoru
ну, наверное, abort() по умолчанию возвращает EXIT_FAILURE, я не уточнял
источник

💮

💮 in codingteam
Ну, если я сделаю exit(0x1234), то это не будет равноценно exit(0x34)?
источник

c

codingteam@cjr in codingteam
Minoru
нет
источник

c

codingteam@cjr in codingteam
Minoru
система запомнит именно 0x1234
источник

💮

💮 in codingteam
Ничего себе.
источник

c

codingteam@cjr in codingteam
Minoru
предок программы получит 0x34, если он использует wait или waitpid
источник

c

codingteam@cjr in codingteam
Minoru
а если использует waitid, то получит весь код целиком, то есть 0x1234
источник

c

codingteam@cjr in codingteam
Minoru
но см. выше про распространённость waitid и про то, как POSIX требует от шеллов использования wait()
источник