Проектная лаборатория
Собственный Shell
Этап 49 · Фоновые задания
Отображение одного задания
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы реализуете встроенную команду jobs для отображения одного фонового задания.
Отслеживание фоновых заданий
Оболочка должна отслеживать задания, выполняющиеся в фоне. Для этого понадобится структура данных (например, список или таблица), хранящая следующую информацию о каждом задании:
- Номер задания (начинается с 1 и увеличивается для каждого нового задания).
- Идентификатор процесса.
- Строка команды.
- Состояние (например, Running).
Формат вывода jobs
На этом этапе встроенная команда jobs должна отображать одно задание, которое ещё выполняется.
Встроенная команда jobs выводит фоновые задания в таком формате:
[1]+ Running sleep 10 &Разберём его:
[1]— номер задания в скобках.+— маркер последнего задания (всегда+, если задание только одно).- Два пробела.
Running— состояние, дополненное пробелами до общей длины 24 символа. Поскольку "Running" содержит7символов, за ним идут17пробелов, заполняющих поле.sleep 10 &— запущенная команда.
При отображении фоновых заданий завершающее & в конце команды необязательно. Bash добавляет его, чтобы показать, что задание запущено в фоне, но другие оболочки, например Zsh, его опускают.
Проверки
Тестирующая система запустит вашу программу следующим образом:
$ ./your_program.shЗатем система запустит фоновое задание и выполнит jobs:
$ sleep 10 &
[1] 84470
$ jobs
[1]+ Running sleep 10 &Тестирующая система проверит, что:
- Задание отображается в правильном формате.
- Номер задания —
[1]. - Маркер —
+. - Состояние —
Running. - Команда соответствует запущенной (завершающее
&необязательно).
Примечания
- Пока нужно отображать только задания, которые ещё выполняются. Обнаружение завершения заданий появится на следующих этапах.
- На этом этапе тестирующая система использует только одно фоновое задание.
- Поле состояния следует дополнить пробелами до общей длины 24 символа (включая "Running" и пробелы после него).
Проверка в вашей IDE
Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.
Настройка проекта и IDE
1. Создайте проект один раз
node '/opt/graphlms/tools/project-lab/cli.mjs' init shell ./my-shell --language go2. Откройте папку в IDE
cd ./my-shellРеализуйте требования этапа в созданном проекте.
Запустите из папки проекта
node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage jd6Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.