Size: a a a

2021 July 23

VO

Vyacheslav Olkhovche... in Modern::Perl
а у поттеринга?
источник

VG

Vadim Goncharov in Modern::Perl
systemctl --user list-unit-files  
Failed to get D-Bus connection: No such file or directory
источник

c

crux in Modern::Perl
хм, странно, вроде нет там в процессе, который с 17 завершается никакой работы с файлами. Но посмотрю внимательно, сенкс
источник

GK

Grigoriy Koudrenko in Modern::Perl
Вообще код  завершения процесса это грубо говоря 8 бит, которые получает родительский процесс. Какой либо классификации данных кодов не существует и зависит от разработчкика приложения, сам этот код из приложения можно передать вызывав сискол _exit или вернув это значение из функции main. Сам стандарт SUSv3 определяет только две константы  EXIT_SUCCESS (0) и EXIT_FAILURE (1), но возвращать числа больше 128 является дурным тоном, так как shell (баш так точно) присваивает в качестве кода возврата 128 + номер сигнала при завершении процесса по сигналу. В linux если процесс завершается сигналом, то в качестве кода  завершения в сисколе wait будет номер сигнала.  
$ perl -MPOSIX=:signal_h -E '$p = fork() // die; raise SIGKILL unless $p; wait(); say $?'
9
источник

GK

Grigoriy Koudrenko in Modern::Perl
В линуксе (но не обязательно в других юникс системах)  в $? биты с 15 по 8 сигнализируют о нормально завершении, а с 0 по 6 о сигнале (7 о coredump) вот для сравнения
$ perl -E '$p = fork() // die; exit(9) unless $p; wait(); say $?; say $? >> 8'
2304
9
источник

VG

Vadim Goncharov in Modern::Perl
это не шелл, это общесистемное
источник

GK

Grigoriy Koudrenko in Modern::Perl
Все очень сильно зависит от того, какое приложение разбирает результат wait процесса
источник

VG

Vadim Goncharov in Modern::Perl
да любое, макросы sys/wait.h общие для всех
источник

GK

Grigoriy Koudrenko in Modern::Perl
Ну макросы то общие а как напишут зависит от
источник

GK

Grigoriy Koudrenko in Modern::Perl
Некоторые и макросами непользуются делая $? >> 8
источник

GK

Grigoriy Koudrenko in Modern::Perl
Ну Майкл Керриск (автор man pages для линукс) пишет так: "Через аргумент status вызова _exit() родителю можно передать любое значение от 0 до 255, однако номера больше 128 могут вызвать неправильную работу скриптов командной строки. Дело в том, что при завершении программы с помощью сигнала командная оболочка сигнализирует об этом, присваивая переменной $? значение 128 плюс номер самого сигнала; это значение невозможно отличить от аналогичного, переданного в результате вызова _exit()."
источник

MG

Mr. Good in Modern::Perl
Я не понял, так есть в Линуксе экзит коды или нет? :)
источник

MG

Mr. Good in Modern::Perl
Капец, чем я занимаюсь пятничным летним вечером, как я до этого докатился? :)
источник

GK

Grigoriy Koudrenko in Modern::Perl
Ну какие-то да есть, опять же стандарт SUSv3 определяет только две константы EXIT_SUCCES и EXIT_FAILURE а дальше все зависит от приложения вот например из man grep (который gnu-шный)
EXIT STATUS
      Normally the exit status is 0 if a line is selected, 1 if no lines were selected, and 2 if an error occurred.  However, if the -q or --quiet or --silent is used and a line is selected, the exit status
      is 0 even if an error occurred.
источник

VG

Vadim Goncharov in Modern::Perl
неграмотно пишет
источник

GK

Grigoriy Koudrenko in Modern::Perl
Все правильно написал:
$ perl -E 'exit(128 + 9)' ; echo $?
137
$ perl -MPOSIX=signal_h -E 'raise 9' ; echo $?
Убито
137
источник

GK

Grigoriy Koudrenko in Modern::Perl
Вот как ты на уровне shell скрипта отличишь как завершился процесс ?
источник

VG

Vadim Goncharov in Modern::Perl
в скрипте это и не требуется
источник

AK

Andrey Konovalov in Modern::Perl
& 255 уже отменили?
источник

GK

Grigoriy Koudrenko in Modern::Perl
137 & 255 == 137
источник