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:
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:'[email protected] >&3
dzięki @mikeserv
bash
shell-script
python
tty
Hamoudy
źródło
źródło
head
lub coś pomiędzycat
atwinkle
i dodać/proc/self/stat
do listycat
„s plików, takich jakcat /proc/self/stat - /dev/tty
- że napisze kilka informacji ocat
procesie, który można uchwycić i wykorzystać do go zamknąć później - pierwsze kilka bajtów to pid.Odpowiedzi:
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?
źródło