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 >&3
dzięki @mikeserv
head
lub coś pomiędzy cat
a twinkle
i dodać /proc/self/stat
do listy cat
„s plików, takich jak cat /proc/self/stat - /dev/tty
- że napisze kilka informacji o cat
procesie, który można uchwycić i wykorzystać do go zamknąć później - pierwsze kilka bajtów to pid.