Эта функция печатает предоставленную строку и символ новой строки в stderr, а затем завершает текущую запущенную программу, предоставляя 1 в качестве возвращаемого значения.
fprintf
похоже на printf
в том смысле, что оно выводит символы, но fprintf
немного отличается тем, что принимает дескриптор файла в качестве аргумента. В этом случае stderr
является дескриптором файла для стандартной ошибки. Этот дескриптор уже определен для вас stdio.h и соответствует потоку вывода ошибок. stdout
- это то, на что выводит printf
, поэтому fprintf(stdout, "hello")
эквивалентно printf("hello")
.
exit
- это функция, которая прекращает выполнение текущего процесса и возвращает любое значение, которое было его аргументом, в качестве кода возврата для родительского процесса (обычно оболочки). Ненулевой код возврата обычно указывает на сбой, конкретное значение указывает тип сбоя.
Если вы запустили эту программу из оболочки:
#include <stdio.h>
#include "errorexit.h"
int main(int argc, char* argv[])
{
printf("Hello world!\n");
errorexit("Goodbye :(");
printf("Just kidding!\n");
return 0;
}
Вы увидите этот вывод:
Hello world!
Goodbye :(
И ваша оболочка будет показывать «1» в качестве возвращаемого значения (в bash вы можете просмотреть последний код возврата с помощью echo $?
).
Обратите внимание, что "Просто шучу!" не будет напечатано , так как errorexit
вызывает exit
, завершая программу до завершения main
.