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:in06khattab@ekiga.net' | 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:

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

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

EDYCJA: Odpowiedź była mkfifo /tmp/pipe; exec 3<>/tmp/pipe; (trap '' TTIN TTOU; twinkle -c) <&3 & printf '\ncall sip:'in06khattab@ekiga.net >&3dzięki @mikeserv
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.