Основы операционных систем. Практикум



         

Системные вызовы и команды для выполнения операций над файлами и директориями - часть 15


Для осуществления операции удаления жестких связей и/или файлов можно задействовать уже известную вам из семинаров 1–2 команду операционной системы rm или системный вызов unlink().

Заметим, что системный вызов unlink() также не требует предварительного открытия удаляемого файла, поскольку после его удаления совершать над ним операции бессмысленно.

Системный вызов unlink()

Прототип системного вызова

#include <unistd.h> int unlink(char *pathname);

Описание системного вызова

Системный вызов unlink служит для удаления имени, на которое указывает параметр pathname, из файловой системы.

Если после удаления имени счетчик числа жестких связей у данного файла стал равным 0, то возможны следующие ситуации.

  • Если в операционной системе нет процессов, которые держат данный файл открытым, то файл полностью удаляется с физического носителя.
  • Если удаляемое имя было последней жесткой связью для регулярного файла, но какой-либо процесс держит его открытым, то файл продолжает существовать до тех пор, пока не будет закрыт последний файловый дескриптор, ссылающийся на данный файл.
  • Если имя относится к файлу типа socket, FIFO или к специальному файлу устройства, то файл удаляется независимо от наличия процессов, держащих его открытым, но процессы, открывшие данный объект, могут продолжать пользоваться им.
  • Если имя относится к файлу типа "связь", то он удаляется, и мягкая связь оказывается разорванной.

Возвращаемое значение

Системный вызов возвращает значение 0 при нормальном завершении и значение -1 при возникновении ошибки.




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