Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Можно создать новый поток файла на основе дескриптора файла, открытого только для чтения, применив функцию
fdopen
Функция
fdopen
fopen
fopen
fdopen
NULL
Ведение файлов и каталогов
Стандартные библиотеки и системные вызовы обеспечивают полный контроль над созданием и ведением файлов и каталогов.
chmod
С помощью системного вызова
chmod
chmod
Далее приведена синтаксическая запись вызова:
<b>#include <sys/stat.h></b>
<b>int chmod(const char *path, mode_t mode);</b>
Права доступа к файлу, заданному параметром
path
mode
mode
OR
chown
Суперпользователь может изменить владельца файла с помощью системного вызова chown.
<b>#include <sys/types.h> #include <unistd.h></b>
<b>int chown(const char *path, uid_t owner, gid_t group);</b>
В вызове применяются числовые значения идентификаторов (ID) нового пользователя и группы (взятые из системных вызовов
getuid
getgid
Стандарт POSIX в действительности допускает существование систем, в которых несуперпользователи могут изменять права владения файлом. Все "правильные" с точки зрения POSIX системы не допускают этого, но строго говоря, это расширение стандарта (в FIPS 151-2). Все виды систем, с которыми мы имеем дело в этой книге, подчиняются спецификации XSI (X/Open System Interface) и соблюдают на деле правила владения.
unlink, link и symlink
С помощью вызова
unlink
Системный вызов
unlink
<b>#include <unistd.h></b>
<b>int unlink(const char *path);</b>
<b>int link(const char *path1, const char *path2);</b>
<b>int symlink(const char *path1, const char *path2);</b>
Если счетчик становится равен нулю и файл не открыт ни в одном процессе, он удаляется. В действительности элемент каталога всегда удаляется немедленно, а место, занятое содержимым файла, не очищается до тех пор, пока последний процесс (если таковой существует) не закроет файл. Этот вызов использует программа
rm
ln
link
Создание файла с помощью вызова
open
unlink
Системный вызов
link
path1
path2
symlink
mkdir и rmdir
Вы можете создавать и удалять каталоги, применяя системные вызовы
mkdir
rmdir
<b>#include <sys/types.h>#include <sys/stat.h></b>
<b>int mkdir(const char *path, mode_t mode);</b>
Системный вызов
mkdir
mkdir
mkdir
path
O_CREAT
umask
<b>#include <unistd.h></b>
<b>int rmdir(const char *path);</b>
Системный вызов
rmdir
rmdir
chdir и getcwd
Программа может перемещаться по каталогам во многом так же, как пользователь перемещается по файловой системе. Как вы применяете в командной оболочке команду
cd
chdir