![]() |
![]() |
![]() |
Справочное описание 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