Справочное описание GLib | ||||
---|---|---|---|---|
#include <glib.h>
#include <glib/gstdio.h>
enum GFileError;
#define G_FILE_ERROR
enum GFileTest;
GFileError g_file_error_from_errno (gint err_no);
gboolean g_file_get_contents (const gchar *filename,
gchar **contents,
gsize *length,
GError **error);
gboolean g_file_set_contents (const gchar *filename,
const gchar *contents,
gssize length,
GError **error);
gboolean g_file_test (const gchar *filename,
GFileTest test);
gint g_mkstemp (gchar *tmpl);
gint g_file_open_tmp (const gchar *tmpl,
gchar **name_used,
GError **error);
gchar* g_file_read_link (const gchar *filename,
GError **error);
int g_mkdir_with_parents (const gchar *pathname,
int mode);
GDir;
GDir* g_dir_open (const gchar *path,
guint flags,
GError **error);
const gchar* g_dir_read_name (GDir *dir);
void g_dir_rewind (GDir *dir);
void g_dir_close (GDir *dir);
GMappedFile;
GMappedFile* g_mapped_file_new (const gchar *filename,
gboolean writable,
GError **error);
void g_mapped_file_free (GMappedFile *file);
gsize g_mapped_file_get_length (GMappedFile *file);
gchar* g_mapped_file_get_contents (GMappedFile *file);
int g_open (const gchar *filename,
int flags,
int mode);
int g_rename (const gchar *oldfilename,
const gchar *newfilename);
int g_mkdir (const gchar *filename,
int mode);
int g_stat (const gchar *filename,
struct stat *buf);
int g_lstat (const gchar *filename,
struct stat *buf);
int g_unlink (const gchar *filename);
int g_remove (const gchar *filename);
int g_rmdir (const gchar *filename);
FILE* g_fopen (const gchar *filename,
const gchar *mode);
FILE* g_freopen (const gchar *filename,
const gchar *mode,
FILE *stream);
int g_chmod (const gchar *filename,
int mode);
int g_access (const gchar *filename,
int mode);
int g_creat (const gchar *filename,
int mode);
int g_chdir (const gchar *path);
Есть группа функций которые являются оболочками для основных POSIX функций имеющих дело с именами файлов
(g_open()
, g_rename()
, g_mkdir()
, g_stat()
,
g_unlink()
, g_remove()
, g_fopen()
, g_freopen()
). Указанные оболочки позволяют обрабатывать имена файлов с любыми
Unicode символами в Windows без необходимости использования ifdefs и расширенного API символов в коде приложения.
Аргумент pathname должен быть в кодировке имён файлов GLib. В
POSIX это фактическая кодировка на диске которая может соответствовать
установкам locale процесса (или переменной окружения G_FILENAME_ENCODING
), или нет.
В Windows кодировкой имён файлов GLib является UTF-8. Помните что Microsoft C library не использует UTF-8, но имеет раздельный APIs для текущей системной кодовой страницы и расширенных символов (UTF-16). Оболочки GLib вызывают расширенный символьный API, если представлен (на современных системах Windows), иначе конвертируют в/из системной кодовой страницы.
Другая группа функций позволяет открывать и читать каталоги в кодировке имён файлов GLib.
Такие как g_dir_open()
,
g_dir_read_name()
, g_dir_rewind()
, g_dir_close()
.
typedef enum
{
G_FILE_ERROR_EXIST,
G_FILE_ERROR_ISDIR,
G_FILE_ERROR_ACCES,
G_FILE_ERROR_NAMETOOLONG,
G_FILE_ERROR_NOENT,
G_FILE_ERROR_NOTDIR,
G_FILE_ERROR_NXIO,
G_FILE_ERROR_NODEV,
G_FILE_ERROR_ROFS,
G_FILE_ERROR_TXTBSY,
G_FILE_ERROR_FAULT,
G_FILE_ERROR_LOOP,
G_FILE_ERROR_NOSPC,
G_FILE_ERROR_NOMEM,
G_FILE_ERROR_MFILE,
G_FILE_ERROR_NFILE,
G_FILE_ERROR_BADF,
G_FILE_ERROR_INVAL,
G_FILE_ERROR_PIPE,
G_FILE_ERROR_AGAIN,
G_FILE_ERROR_INTR,
G_FILE_ERROR_IO,
G_FILE_ERROR_PERM,
G_FILE_ERROR_NOSYS,
G_FILE_ERROR_FAILED
} GFileError;
Значения соответствующие errno
кодам возвращаемым из файловых операций в UNIX.
В отличие от errno
кодов, GFileError
значения доступны во всех системах, даже в Windows. Точное значение каждого кода зависит от выполняемой вами опреции;
UNIX документация даёт больше деталей. Следующие описания error кодов взяты из руководства GNU C Library
и находятся под действие копирайта этого руководства.
Это не очень переносимо для создания подробного предположения о точных ошибках которые будут возвращены из полученной операции. Некоторые ошибки не происходят в некоторых системах и т.д., иногда есть тонкое различие в том когда система сообщит о полученной ошибке и т.д..
G_FILE_ERROR_EXIST |
Операция не разрешена; только владелец файла (или другого ресурса) или процесс со специальными привилегиями может выполнить операцию. |
G_FILE_ERROR_ISDIR |
Файл является каталогом; вы не можете открыть каталог для записи, или создать/удалить жесткую ссылку в нём. |
G_FILE_ERROR_ACCES |
Запрещённое действие; права на файл не позволяют произвести операцию. |
G_FILE_ERROR_NAMETOOLONG |
Слишком длинное имя файла. |
G_FILE_ERROR_NOENT |
Нет такого файла или каталога. Это ошибка "file doesn't exist" для обычных файлов на которые ссылаются в контекстах ожидая что они уже существуют. |
G_FILE_ERROR_NOTDIR |
Файл который не является каталогом, был запрошен как каталог. |
G_FILE_ERROR_NXIO |
Нет такого устройства или адреса. Система попыталась использовать устройство представленное файлом который вы определили и не смогла найти устройство. Это может означать что файл устройства было неправильно установлено, или физическое устройство отсутствует или неправильно подключено к компьютеру. |
G_FILE_ERROR_NODEV |
Файл имеет тип который не поддерживает отображение. |
G_FILE_ERROR_ROFS |
Каталог не может быть изменён потому, что он находится на файловой системе только для чтения. |
G_FILE_ERROR_TXTBSY |
Текстовый файл занят. |
G_FILE_ERROR_FAULT |
Вы перешли в указатель на испорченную память. (GLib не гарантирует возврат этого, не перемещайтесь в указатели на испорченную память.) |
G_FILE_ERROR_LOOP |
Слишкрм много уровней символических ссылок при поиске имени файла. Это часто указывает на циклические символические ссылки. |
G_FILE_ERROR_NOSPC |
Нет свободного пространства на устройстве; запись файла на устройство не удалась, так как диск заполнен. |
G_FILE_ERROR_NOMEM |
Нет доступной памяти. Система не может распределить виртуальную память, так как она полная. |
G_FILE_ERROR_MFILE |
Текущий процесс имеет слишком много открытых файлов и не может больше открыть ни одного. Двойные дескрипторы действительно рассчитывают до этого предела. |
G_FILE_ERROR_NFILE |
Во системе слишком много разных открытых файлов. |
G_FILE_ERROR_BADF |
Плохой дескриптор файла; например, I/O в дескриптор который был закрыт или прочитан из дескриптора открытого только для записи (или наоборот). |
G_FILE_ERROR_INVAL |
Недопустимый параметр. Используется для указания на различного рода проблемы связанные с указанием неправильных параметров библиотечных функций. |
G_FILE_ERROR_PIPE |
Испорченный канал; нет процесса читающего на другом конце канала. Все библиотечные функции, которые возвращают этот код ошибки, также генерируют сигнал `SIGPIPE'; этот сигнал закрывает программу если обработан или не заблокирован. Поэтому ваша программа фактически никогда не увидит этот код пока она обрабатывает или не блокирует `SIGPIPE'. |
G_FILE_ERROR_AGAIN |
Ресурс временно не доступен; повторите запрос немного позже. |
G_FILE_ERROR_INTR |
Прерванный вызов функции; произошёл асинхронный сигнал и предотвратил завершение вызова. Когда это происходит вы должны повторить вызов снова. |
G_FILE_ERROR_IO |
Ошибка ввода/вывода; обычно используется для физических ошибок чтения или записи. То есть диск или другое физическое устройство вернуло ошибку. |
G_FILE_ERROR_PERM |
Опереция не разрешена; только владелец файла (или другого ресурса) или процесс со специальными правами может выполнить операцию. |
G_FILE_ERROR_NOSYS |
Функция не реализована; это указывает что в системе отсутствует некоторая функциональность. |
G_FILE_ERROR_FAILED |
Не соответствует ошибочному коду UNIX; это стандартный код ошибки "failed for unspecified reason" представленный во всех перечислениях GError ошибочных кодов. Возвращается если нет определённого кода. |
#define G_FILE_ERROR g_file_error_quark ()
Домен ошибки для файловых операций. Ошибки в этом домене из перечисления GFileError. Смотрите GError для информации о доменах ошибки.
typedef enum
{
G_FILE_TEST_IS_REGULAR = 1 << 0,
G_FILE_TEST_IS_SYMLINK = 1 << 1,
G_FILE_TEST_IS_DIR = 1 << 2,
G_FILE_TEST_IS_EXECUTABLE = 1 << 3,
G_FILE_TEST_EXISTS = 1 << 4
} GFileTest;
Перечисление для тестирования файла используя g_file_test()
.
G_FILE_TEST_IS_REGULAR |
TRUE если файл обычный (не ссылка или каталог)
|
G_FILE_TEST_IS_SYMLINK |
TRUE если файл является символической ссылкой.
|
G_FILE_TEST_IS_DIR |
TRUE если файл является каталогом.
|
G_FILE_TEST_IS_EXECUTABLE |
TRUE если файл исполняемый.
|
G_FILE_TEST_EXISTS |
TRUE если файл существует.
Может быть или не быть обычным файлом.
|
GFileError g_file_error_from_errno (gint err_no);
Получает константу GFileError основанную на помещённой errno
.
Например, если вы поместили EEXIST
эта функция вернёт
G_FILE_ERROR_EXIST.
В отличие от значений errno
, вы можете предполагать что все значения
GFileError будут существовать при портировании.
Обычно значение GFileError происходит из GError возвращаемой из функций манипулирования файлами. Поэтому вы должны использовать
g_file_error_from_errno()
при создании
GError.
err_no : |
значение "errno" |
Возвращает : | GFileError соответствующую полученной errno
|
gboolean g_file_get_contents (const gchar *filename,
gchar **contents,
gsize *length,
GError **error);
Читает весь файл в распределённую память, с хорошей проверкой ошибок.
Если вызов был выполнен успешно, то возвращает TRUE
и устанавливает contents
в файловый контекст, а length
в длину файлового контекста в байтах. Строка сохраняемая в contents
будет nul-завершённой,
таким образом для текстового файла вы можете поместить
NULL
для аргумента
length
. Если вызов не выполнен, то возвращает
FALSE
и устанавливает
error
. Домен ошибки это
G_FILE_ERROR. Возможные коды ошибок берутся в
перечислении GFileError. В случае ошибки,
contents
устанавливается в значение NULL
, а length
в нулевое значение.
filename : |
имя файла из которого читается содержимое, в кодировке имён файлов GLib |
contents : |
расположение для хранения распределённой строки |
length : |
расположение для хранения длины содержимого в байтах, или NULL
|
error : |
расположение для возвращаемой GError, или NULL
|
Возвращает : | TRUE при успешном выполнении,
FALSE если произошла ошибка
|
gboolean g_file_set_contents (const gchar *filename,
const gchar *contents,
gssize length,
GError **error);
Записывает весь contents
в файл с именем filename
,
с хорошим контролем ошибок.
Если файл с именем filename
уже существует он будет переписан.
Эта запись атомарная в том смысле что сначала записывается в во временный файл который затем переименовывается в конечное имя. Помните:
filename
уже является жёсткой ссылкой,
то связь с filename
будет сломана.
А также, так как файл перезаписан, существующие права доступа, метаданные и т.д. могут быть утеряны.
Если filename
символическая ссылка,
то сама связь будет заменена на не связанный файл.
filename
уже существует и открыт.
Если вызов был успешен, возвращает TRUE
.
Если вызов неудался, возвращает FALSE
и устанавливает error
. Домен ошибки - G_FILE_ERROR.
Возможные коды ошибок берутся из перечисления
GFileError enumeration.
filename : |
имя файла для записи контекста contents ,
в кодировке имён файлов GLib
|
contents : |
строка для записи в файл |
length : |
длина contents , или -1 если contents
является nul-завершённой строкой
|
error : |
расположение для возвращаемой GError,
или NULL
|
Возвращает : | TRUE при успешном выполнении,
FALSE если произошла ошибка
|
Начиная с версии 2.8
gboolean g_file_test (const gchar *filename,
GFileTest test);
Возвращает TRUE
если любой из тестов в битовом поле
test
является TRUE
.
Например, (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)
вернёт
TRUE
если файл существует;
проверка является ли он каталогом не имеет значения, так как тест существования имеет значение
TRUE
.
С текущем набором доступных тестов, нет никакого смысла помещать больше чем один тест одновременно.
Помимо G_FILE_TEST_IS_SYMLINK
все тесты поддерживают символические тесты,
поэтому для символической ссылки на обычный файл g_file_test()
вернёт
TRUE
и для G_FILE_TEST_IS_SYMLINK
и для G_FILE_TEST_IS_REGULAR
.
Помните, для висящей символической ссылки g_file_test()
вернёт
TRUE
для G_FILE_TEST_IS_SYMLINK
и FALSE
для других флагов.
Вы никогда не должны использовать g_file_test()
для тестирования безопасности операции, потомучто всегда есть возможность условия изменяющегося прежде чем вы фактически выполнили операцию.
Например, вы можете подумать что можно использовать G_FILE_TEST_IS_SYMLINK
, чтобы определить можно ли безопасно записать в файл не опасаясь что он находится в другом месте.
Это не работает!
/* Не делайте это */
if (!g_file_test (filename, G_FILE_TEST_IS_SYMLINK)) {
fd = g_open (filename, O_WRONLY);
/* запись в fd */
}
Также помните что G_FILE_TEST_EXISTS
и
G_FILE_TEST_IS_EXECUTABLE
реализованы с использованием системного вызова access()
. Это обычно не имеет значения,
но если ваша программа имеет setuid или setgid это значит что эти тесты дадут вам ответ для реального user ID и group ID,
а не действующего user ID и group ID.
В Windows, нет символических ссылок, поэтому тест для
G_FILE_TEST_IS_SYMLINK
будет всегда возвращать FALSE
. Тест для
G_FILE_TEST_IS_EXECUTABLE
будет просто проверять что файл существует и его имя указывает что он исполняемый, проверяя известные расширения и их список
в переменной окружения PATHEXT
.
gint g_mkstemp (gchar *tmpl);
Открывает временный файл. Смотрите документацию mkstemp()
в большинстве UNIX-подобных системах.
В качестве параметра используется строка которая должна соответствовать правилам шаблонов mkstemp()
,
то есть содержать строку "XXXXXX".
g_mkstemp()
более гибкая чем mkstemp()
в которой последовательность не должна находится в самом конце шаблона. Строка X изменяется для формирования имени не существующего файла.
Строка должна быть в кодировке имён файлов GLib. Наиболее важно что в Windows она должна быть в UTF-8.
tmpl : |
шаблон имени файла |
Возвращает : | Дескриптор файла (как из open() ) для файла открытого для записи и чтения.
Файл открывается в двоичном режиме на платформах где есть различия.
Дескриптор файла должен быть закрыт с помощью close() . В случае ошибки, возвращается -1.
|
gint g_file_open_tmp (const gchar *tmpl,
gchar **name_used,
GError **error);
Открывает файл для записи в привилегированный каталог временных файлов
(который возвращается из g_get_tmp_dir()
).
tmpl
должен быть строкой в кодировке имён файлов GLib содержащей последовательность
шести символов 'X', также как параметр в g_mkstemp()
.
Однако в отличие от этой функции, шаблон должен быть только базовым именем,
ни какие компоненты каталога не допускаются. Если шаблон NULL
,
используется шаблон по умолчанию.
Помните что в отличие от g_mkstemp()
(и mkstemp()
)
tmpl
не изменяется, и может таким образом быть буквенной строкой только для чтения.
Фактически используется имя возвращаемое в name_used
если не-NULL
.
Эта строка должна быть освобождена с помощью g_free()
когда больше не нужна.
Возвращаемое имя находится в кодировке имён файлов GLib.
tmpl : |
Шаблон для имени файла, как в g_mkstemp() ,
только базовое имя, или NULL ,
для использования шаблона по умолчанию.
|
name_used : |
расположение для хранения фактически используемого имени |
error : |
расположение для возвращаемой GError |
Возвращает : | Дескриптор файла (как из open() )
открытого для чтения и записи. Файл открывается в двоичном режиме
на платформах где есть разница. Дескриптор файла должен быть закрыт с помощью
close() . В случае ошибки, возвращает -1 и устанавливает
error .
|
gchar* g_file_read_link (const gchar *filename,
GError **error);
Читает содержимое символической ссылки filename
также как POSIX функция
readlink()
. Возвращаемая строка находится в кодировке используемой для имён файлов.
Использует g_filename_to_utf8()
для конвертации в UTF-8.
filename : |
символическая ссылка |
error : |
размещение для возвращаемой GError |
Возвращает : | Вновь распределённая строка с содержимым символической ссылки,
или NULL если произошла ошибка.
|
Начиная с версии 2.4
int g_mkdir_with_parents (const gchar *pathname,
int mode);
Создаёт каталог если он ещё не существует. Также создаёт необходимые промежуточные родительские каталоги.
pathname : |
имя пути в кодировке имён файлов GLib |
mode : |
права доступа для вновь созданных каталогов |
Возвращает : | 0 если каталог существует, или был полностью создан. Возвращает -1 если произошла ошибка, с установкой errno. |
Начиная с версии 2.8
GDir* g_dir_open (const gchar *path,
guint flags,
GError **error);
Открывает каталог для чтения. Имена файлов в каталоге могут быть найдены с помощью
g_dir_read_name()
.
path : |
путь к интересующему вас каталогу. В Unix в дисковой кодировке (on-disk encoding). В Windows в UTF-8 |
flags : |
В текущее время должен быть установлен в 0. Зарезервирован для использования в будующем. |
error : |
расположение для возвращаемой GError,
или NULL .
Если не-NULL ,
будет установлена ошибка если и только если
g_dir_open() закончилась неудачей.
|
Возвращает : | вновь распределённая GDir при успешном выполнении,
NULL при неудаче.
Если не-NULL , вы должны освободить результат с помощью
g_dir_close() когда вы закончите.
|
const gchar* g_dir_read_name (GDir *dir);
Находит имя следующего входа в каталоге. Входы '.' и '..' пропускаются. В Windows, возвращаемое имя находится в кодировке UTF-8. В Unix, она находится в дисковой кодировке (on-disk encoding).
dir : |
GDir* созданная с помощью g_dir_open()
|
Возвращает : | Имя входа или NULL
если нет больше входов. Возвращаемым значением владеет GLib и оно не должно модифицироваться или освобождаться.
|
void g_dir_rewind (GDir *dir);
Сбрасывает полученный каталог до первой записи.
Следующий вызов g_dir_read_name()
снова вернёт первый вход.
dir : |
GDir* созданная с помощью
g_dir_open()
|
void g_dir_close (GDir *dir);
Закрывает каталоги и освобождает все связанные с ними ресурсы.
dir : |
GDir* созданная с помощью
g_dir_open()
|
typedef struct _GMappedFile GMappedFile;
GMappedFile представляет отображение файла созданное с помощью
g_mapped_file_new()
.
Она имеет только закрытые элементы и не должна использоваться непосредственно.
GMappedFile* g_mapped_file_new (const gchar *filename,
gboolean writable,
GError **error);
Отображает файл в памяти. В UNIX, она использует функцию mmap()
.
Если writable
равна TRUE
, буфер отображения может модифицироваться, иначе она представляет ошибку для изменения отображённого буфера.
Модификации буфера невидимы для других процессов отображающих тот же файл и не записываются обратно в файл.
Помните что модификации основного файла могут затронуть содержимое
GMappedFile.
Поэтому отображение должно использоваться только если файл не будет изменён, или все модификации файла сделаны атомарно
(например используя g_file_set_contents()
).
filename : |
путь файла для загрузки, в кодировке имён файлов GLib |
writable : |
если отображение должно быть изменяемым |
error : |
расположение для возвращаемой GError,
или NULL
|
Возвращает : | вновь распределённая GMappedFile
которая должна освобождаться с помощью
g_mapped_file_free() ,
или NULL если отображение не удалось.
|
Начиная с версии 2.8
void g_mapped_file_free (GMappedFile *file);
Сбрасывает буфер отображения для file
и освобождает его.
file : |
GMappedFile |
Начиная с версии 2.8
gsize g_mapped_file_get_length (GMappedFile *file);
Возвращает размер содержимого GMappedFile.
file : |
GMappedFile |
Возвращает : | размер содержимого file .
|
Начиная с версии 2.8
gchar* g_mapped_file_get_contents (GMappedFile *file);
Returns the contents of a GMappedFile.
Помните что содержимое может быть не ноль-завершённым (zero-terminated), даже если GMappedFile поддерживается текстовым файлом.
file : |
GMappedFile |
Возвращает : | содержимое file .
|
Начиная с версии 2.8
int g_open (const gchar *filename,
int flags,
int mode);
Оболочка для POSIX функции open()
.
Функция open()
используется для конвертации имени пути
в дескриптор файла. Помните что в POSIX системах дескриптор файла реализуется системной операцией.
В Windows, это C библиотека которая реализует open()
и дескриптор файла.
Фактическое Windows API для открытия файлов является другим.
Смотрите руководство C library для детальной информации о open()
.
filename : |
имя пути в кодировке имён файлов GLib (UTF-8 в Windows) |
flags : |
как в open()
|
mode : |
как в open()
|
Возвращает : | новый дескриптор файла, или -1 если произошла ошибка.
Возвращаемое значение может быть использовано точно также как значение из
open() .
|
Начиная с версии 2.6
int g_rename (const gchar *oldfilename,
const gchar *newfilename);
Оболочка для POSIX функции rename()
.
Функция rename()
переименовывает файл,
перемещая его между каталогами если необходимо.
Смотрите руководство для вашей C библиотеки для получения деталей о том как работает rename()
в вашей системе. Помните что в Win9x не возможно переименовать файл если файл с новым именем уже существует.
Также это не возможно вообще в Windows для открытых файлов.
oldfilename : |
имя пути в кодировке имён файлов GLib (UTF-8 в Windows) |
newfilename : |
имя пути в кодировке имён файлов GLib |
Возвращает : | 0 если переименование выполнено, -1 если произошла ошибка |
Начиная с версии 2.6
int g_mkdir (const gchar *filename,
int mode);
Оболочка для POSIX функции mkdir()
.
Функция mkdir()
пытается создать каталог с полученным именем и правами доступа.
Смотрите руководство C библиотеки для больших деталей о mkdir()
.
filename : |
имя пути в кодировке имён файлов GLib (UTF-8 в Windows) |
mode : |
права доступа для использования вновь созданного каталога |
Возвращает : | 0 если каталог был полностью создан, -1 если произошла ошибка |
Начиная с версии 2.6
int g_stat (const gchar *filename,
struct stat *buf);
Оболочка для POSIX функции stat()
.
Функция stat()
возвращает информацию о файле.
Смотрите руководство C библиотеки для больших деталей о stat()
.
filename : |
имя пути в кодировке имён файлов GLib (UTF-8 в Windows) |
buf : |
указатель на структуру stat, которая заполнена информацией о файле. |
Возвращает : | 0 если информация полностью получена, -1 если произошла ошибка |
Начиная с версии 2.6
int g_lstat (const gchar *filename,
struct stat *buf);
Оболочка для POSIX функции lstat()
.
Функция lstat()
похожа на stat()
за исключением того что в случае символической ссылки она возвращает информацию о символической ссылке непосредственно,
а не о файле на который она ссылается. Если система не поддерживает символических ссылок
g_lstat()
идентична g_stat()
.
Смотрите руководство C библиотеки для больших деталей о lstat()
.
filename : |
имя пути в кодировке имён файлов GLib (UTF-8 в Windows) |
buf : |
указатель на структуру stat, которая заполняется информацией о файле |
Возвращает : | 0 если информация была полностью получена, -1 если произошла ошибка |
Начиная с версии 2.6
int g_unlink (const gchar *filename);
Оболочка для POSIX функции unlink()
. Функция unlink()
удаляет имя из файловой системы. Если оно было последней ссылкой на
файл и нет процессов открывших его, дисковое пространство освобождается от файла.
Смотрите руководство C библиотеки для больших деталей о unlink()
.
Помните что в Windows, она не может удалить файлы которые открыты каким нибудь процессом, или отображены в памяти.
filename : |
имя пути в кодировке имён файлов GLib (UTF-8 в Windows) |
Возвращает : | 0 если имя полностью удалено, -1 если произошла ошибка |
Начиная с версии 2.6
int g_remove (const gchar *filename);
Оболочка для POSIX функции remove()
.
Функция remove()
удаляет имя файла из файловой системы.
Смотрите руководство C библиотеки для больших деталей о том как работает remove()
в вашей системе. В Unix, remove()
удаляет также каталоги, так как она вызывает
unlink()
для файлов и rmdir()
для каталогов. В Windows,
хотя remove()
в C библиотеке работает только для файлов, эта функция вызовет сначала
remove()
а затем если это не удалось rmdir()
, поэтому
работает и для файлов и для каталогов. Помните однако, что в Windows, она не сможет удалить файл который открыт
каким нибудь процессом, или отображён в память.
Если эта функция закончилась неудачно в Windows вы не можете получить слишком много из значения ошибки.
rmdir()
пробует выполниться не зависимо от того что remove()
завершилась неудачно. Любое значение errno установленное remove()
будет переписано
rmdir()
.
filename : |
имя пути в кодировке имён файлов GLib (UTF-8 в Windows) |
Возвращает : | 0 если файл был полностью удалён, -1 если произошла ошибка |
Начиная с версии 2.6
int g_rmdir (const gchar *filename);
Оболочка для POSIX функции rmdir()
. Функция rmdir()
каталог из файловой системы.
Смотрите руководство C библиотеки для больших деталей о том как работает rmdir()
в вашей системе.
filename : |
имя пути в кодировке имён файлов GLib (UTF-8 в Windows) |
Возвращает : | 0 если каталог был полностью удалён, -1 если произошла ошибка |
Начиная с версии 2.6
FILE* g_fopen (const gchar *filename,
const gchar *mode);
Оболочка для POSIX функции fopen()
. Функция fopen()
открывает файл и связывает его с новым потоком.
Смотрите руководство C библиотеки для деталей о fopen()
.
filename : |
имя пути в кодировке имён файлов GLib (UTF8 в Windows) |
mode : |
строка describing the mode in which the file should be opened |
Возвращает : | A FILE pointer if the file was successfully
opened, or NULL if an error occurred
|
Начиная с версии 2.6
FILE* g_freopen (const gchar *filename,
const gchar *mode,
FILE *stream);
A wrapper for the POSIX freopen()
function. The freopen()
function
opens a file and associates it with an existing stream.
Смотрите руководство С библиотеки для больших деталей о freopen()
.
filename : |
имя пути в кодировке имён файлов GLib (UTF8 в Windows) |
mode : |
строка describing the mode in which the file should be opened |
stream : |
an existing stream which will be reused, or NULL
|
Возвращает : | A FILE pointer if the file was successfully
opened, or NULL if an error occurred.
|
Начиная с версии 2.6
int g_chmod (const gchar *filename,
int mode);
A wrapper for the POSIX chmod()
function. The chmod()
function is
used to set the permissions of a file system object. Note that on
Windows the file protection mechanism is not at all POSIX-like, and
the underlying chmod()
function in the C library just sets or
clears the READONLY attribute. It does not touch any ACL. Software
that needs to manage file permissions on Windows exactly should
use the Win32 API.
Смотрите руководство С библиотеки для больших деталей о chmod()
.
filename : |
имя пути в кодировке имён файлов GLib (UTF8 в Windows) |
mode : |
как в chmod()
|
Возвращает : | ноль если операция полностью выполнена, -1 при ошибке. |
Начиная с версии 2.8
int g_access (const gchar *filename,
int mode);
Оболочка для POSIX функции access()
.
Эта функция используется для тестирования имени пути на доступ
чтения, записи или исполнения, или просто существование.
В Windows, основная функция access()
в C библиотеке только проверяет параметр READONLY, и не смотрите
остальные ACL. Программное обеспечение, которое должно более точно
обрабатывать права доступа в Windows, должно использовать Win32 API.
Смотрите руководство С библиотеки для больших деталей о access()
.
filename : |
имя пути в кодировке имён файлов GLib (UTF8 в Windows) |
mode : |
как в access()
|
Возвращает : | ноль если имя пути ссылается на существующий объект в файловой системе который прошёл все тесты доступа, или -1 если произошла ошибка. |
Начиная с версии 2.8
int g_creat (const gchar *filename,
int mode);
Оболочка для POSIX функции creat()
.
Функция creat()
используется для конвертации
имени пути в дескриптор файла, создавая файл если необходимо.
Помните что в POSIX системах дескриптор файла реализуется операционной системой.
В Windows, это выполняет C библиотека которая реализует creat()
и дескриптор файла. Фактически Windows API для открытия файлов несколько другое.
Смотрите руководство С библиотеки для больших деталей о creat()
.
filename : |
имя пути в кодировке имён файлов GLib (UTF8 в Windows) |
mode : |
как в creat()
|
Возвращает : | новый дескриптор файла, или -1 если произошла ошибка.
Возвращаемое значение может использоваться точно также как значение из creat() .
|
Начиная с версии 2.8
int g_chdir (const gchar *path);
Оболочка для POSIX функции chdir()
.
Функция изменяет текущий каталог процесса на path
.
Смотрите руководство вашей C библиотеки для больших деталей о chdir()
.
path : |
имя пути в кодировке имён файлов GLib (UTF8 в Windows) |
Возвращает : | 0 при успешном выполнении, -1 если произошла ошибка. |
Начиная с версии 2.8