Stdin, Stdout i argumenty procesu
Tworzenie interaktywnych programów CLI
Stdin, Stdout i argumenty procesu to bezpłatna lekcja Dart Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Dart Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Dart Academy zawiera 4 lekcji w sumie.
Trzy standardowe strumienie
Programy wiersza poleceń komunikują się za pośrednictwem trzech kanałów: stdin służy do wprowadzania danych, stdout do standardowego wyjścia, a stderr do błędów.
stdout a print
print dodaje znak nowego wiersza i zapisuje do stdout. Aby uzyskać większą kontrolę, zapisuj bezpośrednio za pomocą stdout.write — nie pojawi się wtedy dodatkowy znak nowego wiersza.
stdout.write('Loading');Błędy trafiają do stderr
Wysyłaj ostrzeżenia do stderr, a nie do stdout. Dzięki temu właściwe dane wyjściowe pozostaną czyste, gdy użytkownicy przekażą je potokiem do innego programu.
stderr.writeln('Could not find file');Odczyt wiersza danych wejściowych
Zadaj użytkownikowi pytanie, a następnie pobierz jego odpowiedź za pomocą stdin.readLineSync. Program wstrzyma działanie do momentu naciśnięcia przez użytkownika klawisza Enter.
final name = stdin.readLineSync();Dane wejściowe mogą mieć wartość null
readLineSync zwraca obiekt String o typie nullable. Jeśli strumień zostanie zamknięty bez danych wejściowych, otrzymasz null, dlatego obsłuż ten przypadek.
final answer = stdin.readLineSync() ?? '';Prosta pętla interaktywna
Połącz zapis i odczyt, aby zbudować prompt. Wyświetl pytanie, odczytaj odpowiedź, a następnie zareaguj na nią — wszystko w kilku wierszach.
stdout.write('Name? '); final n = stdin.readLineSync();Argumenty wiersza poleceń
Funkcja main może przyjmować List elementów typu String args. Wszystko, co użytkownik wpisze po nazwie programu, trafi tam w odpowiedniej kolejności.
void main(List<String> args) { print(args); }Odczyt jednego argumentu
Uzyskuj dostęp do args według indeksu, tak jak w przypadku każdej listy. Zawsze najpierw sprawdzaj args.isEmpty, aby brak argumentu nie spowodował awarii programu.
if (args.isNotEmpty) print(args[0]);Analizowanie flag za pomocą args
W przypadku rzeczywistych interfejsów CLI pakiet args zamienia flagi i opcje w uporządkowany przeanalizowany wynik, zamiast wymagać ręcznego operowania indeksami.
import 'package:args/args.dart';Ustawianie kodu zakończenia
Poinformuj powłokę o wyniku działania za pomocą exit. Zero oznacza powodzenie, a każda inna wartość sygnalizuje błąd skryptom, które wywołują program.
exit(1);Wyłączanie trybu echa
W przypadku haseł ukryj wpisywane znaki, ustawiając stdin.echoMode na false przed odczytaniem wiersza.
stdin.echoMode = false;Szybkie sprawdzenie
Gdzie narzędzie CLI powinno wysyłać komunikaty o błędach, aby dane przekazywane potokiem pozostały czyste?
Podsumowanie
Potrafisz już zapisywać do stdout i stderr, odczytywać dane wejściowe za pomocą stdin, przyjmować argumenty wiersza poleceń oraz ustawiać kod zakończenia. Twój interfejs CLI jest interaktywny.
Często zadawane pytania
Czy lekcja „Stdin, Stdout i argumenty procesu” jest bezpłatna?
Tak — pełny tekst „Stdin, Stdout i argumenty procesu” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Dart Academy, przejdź na CoddyKit PRO. Kurs Dart Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Stdin, Stdout i argumenty procesu”?
Tworzenie interaktywnych programów CLI Ćwiczysz Dart Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Dart Academy?
Nie wymagamy żadnego doświadczenia. Dart Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Stdin, Stdout i argumenty procesu”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Dart Academy?
Tak. Każda lekcja Dart Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Odczyt i zapis plików
- Katalogi, ścieżki i FileSystemEntity
- Strumieniowe przetwarzanie dużych plików
- Stdin, Stdout i argumenty procesu