Wyjdź / dev / tty po komunikacie o błędzie

0

Uruchamiam tę funkcję bash po naciśnięciu przycisku, wywołuje mój telefon komórkowy, jednak gdy połączenie kończy się lub odrzucam połączenie, zawiesza się w / dev / tty i nie wraca do programu głównego

call.sh

#!/bin/bash

printf %s\\n 'call sip:[email protected]' | cat - /dev/tty |twinkle -c

Oto główny program:

while(1):
if lcd.buttonPressed(lcd.SELECT):
   os.system("./call.sh")

Gdy telefon jest w trybie offline lub połączenie jest odrzucane, zawiesza się i nie wraca do programu python: wprowadź opis zdjęcia tutaj

Musiałbym wtedy nacisnąć CTRL + C i CTRL + Z, aby wyjść, co również zamyka program python.

wprowadź opis zdjęcia tutaj

Czy można wrócić do programu głównego po błędzie przekroczenia limitu czasu żądania 408 lub komunikacie 468 Zajęty tutaj?

wprowadź opis zdjęcia tutaj

EDYCJA: Odpowiedź była mkfifo /tmp/pipe; exec 3<>/tmp/pipe; (trap '' TTIN TTOU; twinkle -c) <&3 & printf '\ncall sip:'[email protected] >&3dzięki @mikeserv

Hamoudy
źródło
Prawdopodobnie chcesz wypróbować CTRL-D na początku linii. Mimo to mówiłem, że to hack.
mikeserv
Jak by to działało, gdyby trzeba było sprawdzić, czy wystąpił błąd przekroczenia limitu czasu żądania 408 lub komunikat 468 Zajęty tutaj. CTRL + D daje to samo, co CTRL + C
Hamoudy
To mógłby być bardziej hack, choć - można wstawić headlub coś pomiędzy cata twinklei dodać /proc/self/statdo listy cat„s plików, takich jak cat /proc/self/stat - /dev/tty- że napisze kilka informacji o catprocesie, który można uchwycić i wykorzystać do go zamknąć później - pierwsze kilka bajtów to pid.
mikeserv
To twój program python, stary. Musisz zignorować sygnał.
mikeserv
Próbowałem / proc / self / stat i to właśnie dostałem prntscr.com/62r93w
Hamoudy

Odpowiedzi:

1

Jeśli chcesz, aby Twinkle nawiązało połączenie po naciśnięciu przycisku, sugerowałbym, aby Twój program monitorujący klawisze używał wiersza poleceń twinkle do bezpośredniego działania:

twinkle -c --immediate --call łyk: [email protected]

Byłoby znacznie łatwiej, gdyby to wszystko bawiło się tty, itp.

Czy też źle zrozumiałem twój zamiar?

roaima
źródło
to tylko przycisk gpio, który zaprogramowałem do wykonywania innych funkcji, takich jak wysyłanie wiadomości e-mail.
Hamoudy