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



         

Введение


Как уже упоминалось в главе 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, так как новые номера ошибок могут вводиться с опережением соответствующего пополнения таблицы системных сообщений.




Содержание  Назад  Вперед