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.