| Справочное описание 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 : |
строка описывающая режим в котором должен быть открыт файл |
| Возвращает : | Указатель FILE если файл был успешно открыт,
или NULL если произошла ошибка
|
Начиная с версии 2.6
FILE* g_freopen (const gchar *filename, const gchar *mode, FILE *stream);
Оболочка для POSIX функции freopen(). Функция freopen() открывает файл
и связывает его с существующим потоком.
Смотрите руководство С библиотеки для больших деталей о freopen().
filename : |
имя пути в кодировке имён файлов GLib (UTF8 в Windows) |
mode : |
строка описывающая режим в котором должен быть открыт файл |
stream : |
существующий поток который будет использоваться, или NULL
|
| Возвращает : | Указатель FILE если файл успешно открыт, или
NULL если произошла ошибка.
|
Начиная с версии 2.6
int g_chmod (const gchar *filename, int mode);
Оболочка для POSIX функции chmod(). Функция chmod()
используется для установки прав на файл. Помните что в Windows механизм защиты файла не соответсвует POSIX,
а основан на функции chmod() в библиотеке C library просто очищая или устанавливая атрибут READONLY.
Он не связан с другими ACL. Программы которые нуждаются в управлении правами доступа файла в Windows естественно должны использовать 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