Я написал программу, которая возвращает код ошибки, используя процессы.Результатом работы программы, если на входе в нее предоставляют команду false, является 255. Однако команда false;echo $?возвращает 1 Почему это происходит?Solaris, unix
Я нашел файл 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);
}