Книга: Основы программирования в Linux
unlink, link и symlink
unlink, link и symlink
С помощью вызова unlink
вы можете удалить файл.
Системный вызов unlink
удаляет запись о файле в каталоге и уменьшает на единицу счетчик ссылок на файл. Он возвращает 0, если удаление ссылки прошло успешно, и -1 в случае ошибки. Для выполнения вызова у вас должны быть права на запись и выполнение в каталоге, хранящем ссылку на файл.
#include <unistd.h>
int unlink(const char *path);
int link(const char *path1, const char *path2);
int symlink(const char *path1, const char *path2);
Если счетчик становится равен нулю и файл не открыт ни в одном процессе, он удаляется. В действительности элемент каталога всегда удаляется немедленно, а место, занятое содержимым файла, не очищается до тех пор, пока последний процесс (если таковой существует) не закроет файл. Этот вызов использует программа rm
. Дополнительные ссылки, предоставляющие альтернативные имена файла, обычно создаются программой ln
. Вы можете программно создать новые ссылки на файл с помощью системного вызова link
.
Примечание
Создание файла с помощью вызова open
и последующее обращение к unlink
для этого файла — трюк, применяемый некоторыми программистами для создания временных или транзитных файлов. Эти файлы доступны программе, только пока они открыты; и будут удалены автоматически, когда программа завершится, и файлы будут закрыты.
Системный вызов link
создает новую ссылку на существующий файл path1
. Новый элемент каталога задается в path2
. Символические ссылки можно создавать аналогичным образом с помощью системного вызова symlink
. Имейте в виду, что символические ссылки на файл не увеличивают значение счетчика ссылок и таким образом, в отличие от обычных (жестких) ссылок, не мешают удалению файла.
- Appendix E. Other resources and links
- 2.3 Executable and Linking Format
- Свойство HelpLink
- Creating Links Between Files with ln
- 13.6.6. prelink
- 13.2. Функции shm_open и shm_unlink
- 2.1.2. The Data Link Layer
- Communications Software for Modem Links
- Routing Through a PPP Link
- Link Control Options
- 2.2 Overview of Linkers and the Linking Process
- 2.4.1 Linker Command File