Jak spawnować terminal podczas wykonywania skompilowanego programu w C?


2

Nadpisałem program do tworzenia zrzutów ekranu gnome, aby dostosować go do moich potrzeb, aby uzyskać zrzut ekranu z dodatkowego wyjściowego karty graficznej domowej roboty, a teraz po naciśnięciu przycisku PrintScreen wykonuje go (w razie potrzeby). Jednak w programie jest kilka instrukcji „printf” (napisanych w C), które chciałbym widzieć jako dane wyjściowe. Czy jest na to jakiś sposób? Być może przez odrodzenie terminala podczas wykonywania programu?

Uruchamianie: Red Hat Enterprise Linux Client wersja 5.8 (Tikanga)


Możesz spróbować użyć skryptu, aby przesłać dane wyjściowe do okna standardowego.
— Przełom

Czy mógłbyś opracować? Przykład może?
— user1028435

Seth Noble opublikował świetną odpowiedź opisującą to szczegółowo.
— Przełom

Myślę, że byłem zdezorientowany, ponieważ kiedy próbuję tego, o czym wspomniał, tworzy plik „1” i plik dziennika. Dodałem otwieranie dziennika w gedit jako drugie polecenie skryptu po jego zakończeniu, ale nie wiedziałem, czy istnieje sposób na okno terminala zamiast pliku.
— user1028435

co się stanie, gdy potokujesz wyjście echo? (tj. bieg myprscr | echo)
— Przełom

Odpowiedzi:


2

Najprostszym sposobem na przechwycenie danych wyjściowych byłoby zawinięcie polecenia PrintScreen w powłoce i przekierowanie danych wyjściowych do pliku. Na przykład, jeśli twój program ma nazwę myprscr, skryptem powłoki może być:

#!/bin/sh
myprscr 2>1 1>>/tmp/myprscr.log

Następnie przycisk PrintScreen powinien uruchomić skrypt powłoki zamiast polecenia. Prawdopodobnie będziesz chciał użyć pełnej ścieżki do myprscr.


Tak, myślę, że to będzie zwycięska odpowiedź. I pomyśleć, że przeszedł przez cały ten trud podejmowania niewielki postęp ASCII bar łzawią .
— użytkownik1028435

Tylko FYI głosowałbym, ale nie mam wystarczającej ilości karmy.
— user1028435

Próbujesz tego teraz, ale dane wyjściowe nie są wyświetlane, dopóki myprscr nie zostanie całkowicie zakończone ... w każdym razie, aby to zrobić w czasie rzeczywistym?
— user1028435

Możesz otworzyć inny terminal i zrobićtail -f /tmp/myprscr.log
— Seth Noble
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.