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

         

Первый параметр PathName указывает на


uses stdio;
function Fdcreat(PathName:Pchar;mode:longint):longint;cdecl;external 'c';
Первый параметр PathName указывает на маршрутное имя файла UNIX, определяющее имя создаваемого файла и путь к нему. Так же, как в случае вызова fdopen, параметр mode задает права доступа. При этом, если файл существует, то второй параметр также игнорируется. Тем не менее, в отличие от вызова fdopen, в результате вызова fdcreat файл всегда будет усечен до нулевой длины. Пример использования вызова fdcreat:
filedes := fdcreat('/tmp/newfile', octal(0644));
что эквивалентно вызову
filedes := fdopen('/tmp/newfile', Open_WRONLY or Open_CREAT or Open_TRUNC, octal(0644));
Ключевое слово cdecl определяет для данной функции стиль вызова, характерный для языка С. Это необходимо для доступа к функциям в объектных файлах, сгенерированных компилятором языка С, таким, как функции стандартной библиотеки языка С (это указывается с помощью ключевого слова external, параметром которого является имя библиотеки – 'c').
Следует отметить, что вызов fdcreat всегда открывает файл только для записи. Например, программа не может создать файл при помощи fdcreat, записать в него данные, затем вернуться назад и попытаться прочитать данные из файла, если предварительно не закроет его и не откроет снова при помощи вызова fdopen.
Упражнение 2.3. Напишите небольшую программу, которая вначале создает файл при помощи вызова fdcreat, затем, не вызывая fdclose, сразу же, открывает его при помощи системного вызова fdopen для чтения в одном случае и записи в другом. В обоих случаях выведите сообщение об успешном или неуспешном завершении, используя writeln.

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