Запись вывода и коды завершения
Сообщайте результаты и статус выполнения.
«Запись вывода и коды завершения» — бесплатный урок Zig Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Zig Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Zig Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Tools Talk Back
Reading input is half the job. A finished CLI also writes output and signals success or failure to whatever ran it. 📤
Two Output Streams
Programs have two channels: stdout for normal results and stderr for messages and errors. Keeping them separate lets users pipe results cleanly.
Get the stdout Writer
Reach for std.io.getStdOut and ask it for a writer. That writer is your handle for sending normal output to the terminal.
const out = std.io.getStdOut().writer();Print with print
A writer's print method formats and writes in one call, using the same format string and argument tuple you already know.
try out.print("Result: {d}\n", .{total});Writing Can Fail
Output goes to a real stream that might be closed, so writes return an error. That is why try sits in front of every print.
Errors Go to stderr
Send warnings and failures to std.io.getStdErr so they do not pollute piped results. Users can read errors while data flows onward.
const err = std.io.getStdErr().writer();Quick Debug Output
For rough logging, std.debug.print writes straight to stderr with no try needed. It is handy while developing, not for real output.
std.debug.print("loaded {d} items\n", .{count});The Exit Code Convention
When your program ends it returns a number. Zero means success; any non-zero value tells the shell something went wrong.
main Can Return Errors
Give main a return type of !void. If an error bubbles out, Zig prints a trace and exits with a non-zero code for you.
pub fn main() !void {}Choose Your Own Code
Need a specific status? Call std.process.exit with a u8. It ends the program immediately with exactly that exit code.
std.process.exit(2);Flush Before You Exit
If you used a buffered writer, call flush() before exiting. Otherwise buffered text may never reach the terminal.
try bw.flush();Quick Check
Recall what an exit code tells the shell that launched your tool.
Recap
You wrote results to stdout, errors to stderr, used try on every write, and ended with a clear exit code. Your tool reports cleanly. 🎯
Часто задаваемые вопросы
Урок «Запись вывода и коды завершения» бесплатный?
Да — полный текст урока «Запись вывода и коды завершения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Zig Academy, подпишись на CoddyKit PRO. Курс Zig Academy содержит 4 уроков всего.
Чему я научусь в уроке «Запись вывода и коды завершения»?
Сообщайте результаты и статус выполнения. Ты практикуешь Zig Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Zig Academy?
Предыдущий опыт не требуется. Zig Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Запись вывода и коды завершения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Zig Academy?
Да. Каждый урок Zig Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Чтение аргументов командной строки
- Чтение файлов и stdin
- Запись вывода и коды завершения
- Упаковка и выпуск бинарного файла