Проектная лаборатория

Собственный Shell

0 / 76этапов пройдено

Этап 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 go

2. Откройте папку в IDE

cd ./my-shell

Реализуйте требования этапа в созданном проекте.

Запустите из папки проекта

node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage jd6

Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.

Результат проверки

go / ЛОКАЛЬНО

Подключение к локальной проверке…

Здесь появится результат

Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.

GraphLMS — инженерная лаборатория роста