@famousman204

Как установить переменную $? в си программе?

Я пишу шелл. В задании нужно чтобы после каждого запуска других программ через мой шелл устанавливалось значение переменной $?. И что то я не понимаю как это сделать? Эту переменную сама система устанавливать будет или я должен как то ручками прописывать ее значение?
  • Вопрос задан
  • 143 просмотра
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$? - это статус завершения последней программы.
В C соответствует значению, возвращаемому функцией main. Нормальное завершение программы должно возвращать 0, каждая ошибка обычно соответствует своему коду.
Ответ написан
Комментировать
@S-trace
https://man7.org/linux/man-pages/man3/setenv.3.html

Используйте
setenv(const char *name, const char *value, int overwrite);

Например так:
setenv("?", itoa(return_code), 1);

Отвечающие выше не поняли вопроса.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@pfg21
ex-турист
exit 0 в конце main()
завершение main приводит к завершению программы (в общем случае). а выходное значение main помещается в переменную статуса $?
https://man7.org/linux/man-pages/man1/bash.1.html Special Parameters
Ответ написан
Комментировать
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
Эту переменную сама система устанавливать будет

Будет. Если скажешь. $? - это код возврата последней выполненной команды. Код возврата устанавливается вызовом exit()

man exit в общем.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы