W Bash dowiedziałem się, że sygnał końcowy można zmienić tutaj. Ale jak domyślnie mogę sygnalizować koniec wejścia standardowego?
Zdarzyło mi się, że w przypadku cat i chardet ich wejścia standardowe mogą być sygnalizowane jako zakończone przez Ctrl + d. Wydaje mi się jednak, że pamiętam, że Ctrl + d i Ctrl + c są podobne do zakończenia wykonywania uruchomionego polecenia. Więc się mylę?
Ctrl+D, po wpisaniu na początku linii na terminalu, oznacza koniec danych wejściowych. Nie jest to sygnał w sensie uniksowym: gdy aplikacja czyta z terminala, a użytkownik naciska Ctrl+D, aplikacja jest powiadamiana, że osiągnięto koniec pliku (tak jak w przypadku odczytu z pliku i przekazania ostatni bajt).
Ctrl+Cwysyła sygnał, SIGINT . Domyślnie SIGINT (sygnał przerwania) zabija aplikację pierwszoplanową, ale aplikacja może przechwycić sygnał i zareagować w inny sposób (na przykład sama powłoka przechwytuje sygnał i przerywa linię, którą zacząłeś pisać, ale nie „ t exit, wyświetla nowy monit i czeka na nowy wiersz poleceń).
Można zmienić znaki związane z EOF i SIGINT z sttypoleceniem, np stty eof astałaby aznak EOF, a stty intr ^-byłoby wyłączyć charakter SIGINT. Jest to rzadko przydatne.
@Tim: potrzebujesz małych liter ... Konwencja pisania poleceń klawiaturowych wielkimi literami pojawia się, ponieważ etykiety na klawiaturze są zawsze pisane wielkimi literami, a opisywana jest KLUCZOWA SEKWENCJA, a nie rzeczywisty kod znaków widziany przez program. Tak, czasami jest to mylące.
@Tim Terminal otrzymał Ctrl + D. Nie wysyła znaku do programu. Co się dzieje, gdy program odczytuje z terminala, terminal mówi mu „to jest koniec pliku”, tak samo jak wtedy, gdy program próbuje czytać po zakończeniu pliku dyskowego. Powłoka w ogóle nie jest zaangażowana.
Potencjalne zamieszanie: z punktu widzenia aplikacji nie jest wysyłany żaden rzeczywisty znak dla ^ D. Co oznacza, że aplikacja nie odbiera tej postaci z read(2)wywołania systemowego.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.
Ctrl+D
oznacza Ctrl i wielką literę D, czy to nie ma znaczenia?