Почему echo$?' возвращает 0, хотя ожидается 1?

В моей системе mint все файлы в /bin имеют номер 0755, кроме fusermount, mount, ping, ping6,и su, то есть 04755.

0755 — разумная маска разрешений для общего исполняемого файла. Какие исполняемые файлы имеют setuid, во многом зависит от политик безопасности вашей системы.

Попытка:

chmod -R 0755 /bin && chmod  04755 /bin/{{,fuser}mount,ping{,6},su}

(в качестве root )на данный момент мало что может навредить (установка setuid root на что угодно является потенциальной уязвимостью ).

0
25.04.2019, 09:39
2 ответа

если я скомпилирую ваш код с помощью gnu g++ в своей системе :echo $? дает мне 1. У вас такая же проблема с кодом на c, bash, python,...? Также :имейте в виду, что $? доступен только для последней команды return :$? для эха $? равно 0.

1
28.01.2020, 02:30

Ваша программа работает именно так, как вы ожидаете:

$ cat prog.c
int main()
{
    return 1;
}
$ cc prog.c
$./a.out
$ echo $?
1

Обратите внимание, что если вы что-то сделаете в -между запуском вашей программы и выводом $?, значение $?будет перезаписано статусом выхода -команд, которые вы используете. Например,

$./a.out
$ echo "I ran the program"
I ran the program
$ echo $?
0

Здесь 0— это статус выхода echo.

1
28.01.2020, 02:30

Теги

Похожие вопросы