- chdir () на языке C с примерами
- Chdir (Cd)
- Синтаксис
- Параметры
- Заметки
- Примеры
- Русские Блоги
- Операции с каталогами в Linux (opendir, readdir, getcwd, chdir и другие функции)
- Управление файловой системой системных функций Linux (3)
- Для работы с каталогами
- функция opendir
- функция чтения
- закрытая функция
- функция getcwd
- функция чдир
- chdir(3) — Linux man page
- Prolog
- Synopsis
- Description
- Return Value
- Errors
- Examples
- Changing the Current Working Directory
- Application Usage
- Rationale
- Future Directions
- See Also
- chdir, fchdir — функции смены рабочего каталога
chdir () на языке C с примерами
Команда chdir — это системная функция (системный вызов), которая используется для изменения текущего рабочего каталога. В некоторых системах эта команда используется в качестве псевдонима для команды оболочки cd . chdir изменяет текущий рабочий каталог вызывающего процесса на каталог, указанный в path.
Синтаксис:
Параметр: Здесь путь — это путь к каталогу, который пользователь хочет сделать текущим рабочим каталогом.
Возвращаемое значение: эта команда возвращает ноль (0) в случае успеха. -1 возвращается при ошибке и errno устанавливается соответствующим образом.
Примечание: объявлено в unistd.h .
Пример 1:
// объявлена функция chdir
// внутри этого заголовка
#include
// печать текущего рабочего каталога
printf ( «%s\n» , getcwd(s, 100));
// печать текущего рабочего каталога
printf ( «%s\n» , getcwd(s, 100));
// после выполнения chdir
Выход:
Примечание. Приведенная выше программа меняет рабочий каталог процесса. Но это не меняет рабочий каталог текущей оболочки. Потому что когда программа выполняется в оболочке, оболочка следует за форком по механизму exec. Таким образом, это не влияет на текущую оболочку.
Пример 2:
// рабочий каталог (cwd)
if (chdir( «/usr» ) != 0)
perror ( «chdir() to /usr failed» );
// меняем cwd на / tmp
if (chdir( «/tmp» ) != 0)
perror ( «chdir() to /temp failed» );
// каталог на моем компьютере
if (chdir( «/error» ) != 0)
// так что chdir вернет -1
perror ( «chdir() to /error failed» );
Выход:
Ошибки: могут быть ошибки, которые могут быть возвращены. Это зависит от файловой системы.
- EACCES: Если в поиске отказано для одного из компонентов пути.
- EFAULT: если точки пути лежат за пределами доступного адресного пространства.
- EIO: если произошла ошибка ввода / вывода.
- ELOOP: Если в пути разрешения обнаружено слишком много символических ссылок.
- ENAMETOOLONG: если путь слишком длинный.
- ENOENT: если файл не существует.
- ENOMEM: если недостаточно памяти ядра доступно.
- ENOTDIR: если компонент пути не является каталогом.
Источник
Chdir (Cd)
Вывод имени текущего каталога или переход в другую папку. При использовании только с именем диска (например chdir C:) команда chdir выводит имена текущих диска и папки. Выполненная без параметров команда chdir выводит текущие диск и каталог.
Синтаксис
Параметры
Заметки
- Работа с расширениями командного процессора
Если расширения командного процессора разрешены (задано по умолчанию), имена папок в пути к текущему каталогу отображаются точно так же, как на жестком диске, в том же формате имен папок с учетом регистра. Например, если имя папки на жестком диске C:\Temp, команда CD C:\TEMP задает текущий каталог C:\Temp, соответствующий формату имени этой папки на жестком диске.
Чтобы запретить расширения командного процессора для определенного процесса, введите следующую команду:
Если расширения командного процессора запрещены, в команде chdir нельзя использовать пробелы в качестве разделителей. Таким образом, можно перейти в подкаталог, имя которого содержит пробел, не заключая параметр [путь] в кавычки. Например, следующий путь позволяет перейти в подкаталог \Start menu.
cd \winnt\profiles\username\programs\start menu
Для получения дополнительных сведений о разрешении и запрещении расширений командного процессора щелкните ссылку CMD.
Переход в корневой каталог
Корневой каталог является вершиной дерева каталогов на диске. Чтобы перейти в корневой каталог, введите следующую команду:
Переход из основного каталога одного диска в основной каталог другого
Чтобы перейти в основной каталог диска отличного от текущего, введите следующую команду:
Чтобы проверить переход к этому каталогу, введите одну из следующих команд:
Примеры
Используемая с именем диска команда chdir позволяет перейти в текущий каталог этого диска. Например, если ввести команду cd c: в приглашении каталога C:\Temp, отобразится следующая строка:
Чтобы перейти в текущий каталог Reports, введите одну из следующих команд:
Чтобы перейти из текущего каталога в подкаталог \Specials\Sponsors, введите следующую команду:
Или, если текущим каталогом является \Specials, введите следующую команду, чтобы перейти в подкаталог \Specials\Sponsors:
Чтобы перейти из подкаталога в родительский каталог, введите следующую команду:
Для вывода на экран имени текущего каталога можно использовать команду chdir или cd без параметров. Например, если текущим каталогом является \Public\Jones на диске B, вызов команды chdir приведет к следующему результату:
Если при работе на диске D требуется скопировать все файлы каталогов \Public\Jones и \Public\Lewis на диске C в корневой каталог диска D, введите следующую последовательность команд:
Если требуется скопировать все файлы каталогов \Public\Jones и \Public\Lewis в текущий каталог диска D, введите следующие команды:
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).
Новый раздел о средствах командной строки в рамках этого же проекта расположен здесь
Источник
Русские Блоги
Операции с каталогами в Linux (opendir, readdir, getcwd, chdir и другие функции)
Управление файловой системой системных функций Linux (3)
Для работы с каталогами
функция opendir
Прототип: DIR *opendir(const char *name)
Возвращаемое значение: вернуть указатель на структуру DIR в случае успеха или NULL в случае ошибки
Приложение: класс f аналогичен работе файлов на языке C, DIR * эквивалентен FILE *
Подробное объяснение структуры DIR
Структура DIR похожа на FILE и является внутренней структурой. Следующие функции используют эту внутреннюю структуру для хранения информации о каталоге, читаемом в данный момент.
1. struct dirent *readdir(DIR* *dp) Читать каталог
2. v oid rewinddir(DIR* dp) Используется для установки текущей позиции чтения потока каталога параметров dir в исходную начальную позицию чтения
3. int closedir(DIR* dp) Закрыть каталог
4. long telldir(DIR* dp) Используется для записи местоположения потока каталога. Возвращаемое значение записывает текущую позицию потока каталога. Это возвращаемое значение представляет расстояние от начала файла каталогаофсетВозвращаемое значение возвращает следующую позицию чтения
void seekdir(DIR* dp, long loc) Установите текущую позицию чтения потока каталога dir и начните чтение с этой новой позиции при вызове readdir (). Параметр offset представляет собой расстояние от начала файла каталогаофсет。
функция чтения
Функциональный прототип: struct dirent *readdir(DIR *dirp)
Возвращаемое значение: успешно возвращает указатель struct dirent Указатель типа структуры, возврат при ошибке NULL ;
параметр: opendir Указатель потока каталога, возвращаемый функцией
struct dirent Детальная структура
Файл каталога: сохраняется таблица, которая представляет собой отношение отображения между всеми именами файлов и индексами в файле каталога. Этот файл содержит имена других файлов и указатели на информацию об этих файлах.
и так, dirent Не только указывает на каталог, но и конкретные файлы в каталоге.
закрытая функция
Функциональный прототип: struct dirent *readdir(DIR *dirp)
Возвращаемое значение: успешно возвращает указатель struct dirent Указатель типа структуры, возврат при ошибке NULL ;
параметр: opendir Указатель потока каталога, возвращаемый функцией
функция getcwd
Функция: Получить текущий рабочий каталог
Функциональный прототип: char *getcwd(char *buffer, size_t size)
Возвращаемое значение: в случае успеха возвращается текущий рабочий каталог, в случае сбоя возвращаетсяNULL
Описание параметра: getcwd () изменит текущий рабочий каталогАбсолютный путьСкопируйте в область памяти, указанную буфером параметров, размер параметра — это размер пространства буфера.
функция чдир
Функция: Изменить рабочий каталог
Функциональный прототип: int chdir(const char *path)
Возвращаемое значение: в случае успеха возвращается текущий рабочий каталог, в случае сбоя возвращаетсяNULL
Описание параметра: целевой путь каталога, который может быть абсолютным или относительным каталогом
Источник
chdir(3) — Linux man page
Prolog
Synopsis
Description
The chdir() function shall cause the directory named by the pathname pointed to by the path argument to become the current working directory; that is, the starting point for path searches for pathnames not beginning with ‘/’ .
Return Value
Upon successful completion, 0 shall be returned. Otherwise, -1 shall be returned, the current working directory shall remain unchanged, and errno shall be set to indicate the error.
Errors
The chdir() function shall fail if: EACCES Search permission is denied for any component of the pathname. ELOOP A loop exists in symbolic links encountered during resolution of the path argument. ENAMETOOLONG The length of the path argument exceeds
The chdir() function may fail if: ELOOP More than
The following sections are informative.
Examples
Changing the Current Working Directory
The following example makes the value pointed to by directory, /tmp, the current working directory.
Application Usage
Rationale
The chdir() function only affects the working directory of the current process.
Future Directions
See Also
getcwd(), the Base Definitions volume of IEEE Std 1003.1-2001,
Источник
chdir, fchdir — функции смены рабочего каталога
НАЗВАНИЕ
chdir, fchdir — функции смены рабочего каталога
int chdir(const char *path);
int fchdir(int fd);
ОПИСАНИЕ
chdir устанавливает текущий каталог, указанный в аргументе
path.
fchdir работает так же, как chdir, только в качестве
аргумента используется описатель файла.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
После успешного выполнения возвращаемое значение
становится нулевым. При ошибке возвращаемое значение
равно -1, а переменной errno присваивается код ошибки.
КОДЫ ОШИБОК
Наиболее общие коды ошибок для chdir:
EFAULT (указатель path ссылается на каталоги за пределами
доступного адресного пространства);
ENAMETOOLONG
(путь path является слишком длинным);
ENOENT (указанный файл не существует);
ENOMEM (недостаточно памяти);
ENOTDIR
(часть path не является каталогом);
EACCES (запрещен поиск в одном из каталогов, находящихся
на пути к path);
ELOOP ( path является зацикленной символьной ссылкой, то
есть при подстановке возникает ссылка на неё саму);
EIO (ошибка ввода-вывода);
Основные ошибки для fchdir:
EBADF ( fd — неправильный описатель файла);
EACCES (в каталоге, заданном с помощью fd, процесс поиска
запрещен).
ЗАМЕЧАНИЯ
Прототип для fchdir доступен, только если определено
_BSD_SOURCE (либо явно, либо неявно — не определением
переменной _POSIX_SOURCE или компилированием с флагом
-ansi).
В зависимости от файловой системы в работе могут
появляться и другие ошибки.
СООТВЕТСТВИЕ СТАНДАРТАМ
Системный вызов chdir совместим с SVr4, SVID, POSIX,
X/OPEN, 4.4BSD. SVr4 содержит следующие дополнительные
коды ошибок: EINTR, ENOLINK и EMULTIHOP,- но не содержит
ENOMEM. POSIX.1 не содержит коды ошибок ENOMEM и ELOOP.
X/OPEN не определяет коды ошибок EFAULT, ENOMEM и EIO.
Системный вызов fchdir совместим с SVr4, 4.4BSD и X/OPEN.
SVr4 описывает дополнительные коды ошибок: EIO, EINTR, и
ENOLINK. X/OPEN определяет дополнительные коды ошибок:
EINTR и EIO.
Источник