Я написал программу, которая возвращает код ошибки с помощью процессов. Результат работы программы, если при входе в нее указать команду false, равен 255. Однако команда false; эхо $? возвращает 1 Почему это происходит? Солярис, Юникс
Я нашел файл false.c в исходном коде, он возвращает 255 (не уверен, что это правильная команда) https://github.com/illumos/illumos-gate/blob/master/usr/src/cmd/false/false.c
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <wait.h>
main(int argc, char *argv[])
{
int status;
pid_t pid = fork();
if (pid == -1){
perror("fork error");
exit(-1);
}
if (pid == 0) {
execvp(argv[1], &argv[1]);
perror(argv[1]);
exit(-5);
}
if( wait(&status) == -1){
perror("wait");
exit(-1);
}
if(WIFEXITED(status))
printf("exit status: %d\n",WEXITSTATUS(status));
exit(0);
}
false
вы выполняете? bash имеет встроенную функцию false. Рассмотрим команды bashcommand
иbuiltin
. - person glenn jackman   schedule 26.05.2019type false
и ваш менеджер пакетов). - person Michael Jaros   schedule 26.05.2019false
в bash, он будет использовать встроенный bash. Если вы запуститеfalse
черезexec*p
, тогда будет запущен двоичный файл системы. - person that other guy   schedule 26.05.2019