Системное программирование в UNIX средствами Free Pascal

       

в главе 2, ОС UNIX


Как уже упоминалось в главе 2, ОС UNIX обеспечивает набор стандартных кодов ошибок и сообщений, описывающих ошибки. Ошибки генерируются при неудачном завершении системных вызовов; С каждым типом ошибки системного вызова связан номер ошибки, мнемонический код (константа, имеющая значение номера ошибки) и строка сообщения. Эти объекты можно использовать в программе, если включить в нее модуль linux.
В случае возникновения ошибки системный вызов устанавливает новое значение переменной linuxerror. Почти всегда системный вызов сообщает об ошибке, возвращая вызывающему процессу в качестве результата величину –1. После этого можно проверить соответствие значения переменной linuxerror мнемоническим кодам, определенным в файле linux, например:
uses linux;
var
  pid:longint;
.
.
.
pid := fork;
if pid = -1 then
begin
  if linuxerror = Sys_EAGAIN then
    writeln('Превышен предел числа процессов')
  else
  writeln('Другая ошибка');
end;
Внешний массив sys_errlist является таблицей сообщений об ошибках, выводимых процедурой perror. Переменная linuxerror может использоваться в качестве индекса этого массива, если нужно вручную получить системное сообщение об ошибке. Внешняя целочисленная переменная sys_nerr задает текущий размер таблицы sys_errlist. Для получения индекса в массиве следует всегда проверять, что значение переменной linuxerror меньше значения sys_nerr, так как новые номера ошибок могут вводиться с опережением соответствующего пополнения таблицы системных сообщений.

Содержание раздела