Книга: Разработка приложений в среде Linux. Второе издание
14.6.1. Добавление встроенных команд cd и pwd
14.6.1. Добавление встроенных команд cd
и pwd
Добавление встроенных команд является прямым применением вызовов chdir()
и getcwd()
. Код соответствует runProgram()
как раз там, где обрабатываются другие встроенные команды. Ниже показан раздел обработки встроенных команд в ladsh3.с
.
422: if (!strcmp(newJob.progs[0].argv[0], "exit")) {
423: /* здесь должен возвращаться реальный код завершения */
424: exit(0);
425: } else if (!strcmp(newJob.progs[0].argv[0], "pwd")) {
426: len = 50;
427: buf = malloc(len);
428: while (!getcwd(buf, len) && errno == ERANGE) {
429: len += 50;
430: buf = realloc(buf, len);
431: }
432: printf("%sn", buf);
433: free(buf);
434: return 0;
435: } else if (!strcmp(newJob.progs[0].argv[0], "cd")) {
436: if (!new Job.progs[0].argv[1] == 1)
437: newdir = getenv("HOME");
438: else
439: newdir = newJob.progs[0].argv[1];
440: if (chdir(newdir))
441: printf("сбой при смене текущего каталога: %sn",
442: strerror(errno));
443: return 0;
444: } else if (!strcmp(newJob.progs[0].argv[0], "jobs")) {
445: for (job = jobList->head; job; job = job->next)
446: printf(JOB_STATUS_FORMAT, job->jobId, "Выполняется",
447: job -> text);
448: return 0;
449: }
- Инструмент командной строки gbak
- Инструмент командной строки gfix
- 5.4 Команда trap: обработка прерываний
- 6.3. Добавление фоновой музыки
- Команды и формирование культуры по инициативе сверху
- Добавление, изменение и удаление элементов списка
- Добавление, изменение и удаление столбцов списка
- Добавление и изменение представления списка
- Добавление документов
- Добавление рисунков
- Добавление цели в рабочую область для собраний
- Добавление повестки в рабочую область для собраний