Ich versuche, manuell eine Verbindung zwischen meinem Laptop und meinem Telefon herzustellen. Ich habe bluez-utils
die Version 4.98-2ubuntu7
installiert. Wenn ich den Agenten auf dem Terminal ausführe, erhalte ich:
asheesh@U32U:~$ sudo bluetooth-agent 4835
Pincode request for device /org/bluez/980/hci0/dev<id>
Authorizing request for /org/bluez/980/hci0/dev<id>
Die PIN-Code-Anforderungszeile wird gedruckt, wenn ich versuche, von meinem Telefon aus eine Verbindung herzustellen. Nachdem ich den Passkey nach entsprechender Aufforderung eingegeben habe, wird das Gerät autorisiert. Ich kann jetzt Dateien von meinem Telefon an den Laptop senden. Allerdings bleibt die Anwendung nach der Autorisierungsanforderung hängen und die Kontrolle wird nicht an das Terminal zurückgegeben.
Warum passiert das? Wie bekomme ich die Kontrolle zurück?
Dies scheint im Widerspruch zu Beispielen zu stehen, die ich im Internet gesehen habe, wo das Terminal nach der Autorisierung zum Ausführen weiterer Befehle verfügbar wird.
Mir ist bewusst, dass die Ausführung im Hintergrund eine mögliche Lösung ist, aber da ich nach Abschluss der Kopplung bestimmte andere Aufgaben ausführen muss, würde ich es lieber im Vordergrund laufen lassen.
Ich habe versucht, dies zu verwenden:
bluetooth-agent "$PIN" 1> ./bluelog #Background run tested also
Der Prozess schreibt seine Ausgabe jedoch erst in eine Datei, wenn er abgeschlossen ist (oder beendet wird), sodass ich die Ausgabe nicht testen kann bluelog
. Gibt es eine Möglichkeit, den Prozess zu zwingen, vor Abschluss eine Ausgabe zu schreiben?
Antwort1
Dies ist lediglich eine Umgehung des Problems. Alle Vorschläge zur Lösung des eigentlichen Problems des bluetooth-agent
Abwürgens sind willkommen.
Normalerweise deaktiviere ich die stdbuf
Zeilenpufferung, STDOUT
wenn sie bluetooth-agent
im Hintergrund ausgeführt wird. Dadurch wird die Protokolldatei in Echtzeit aktualisiert, sodass ich die restlichen erforderlichen Aktivitäten überprüfen und auslösen kann.
stdbuf -o 0 bluetooth-agent "$PIN" 1> ./bluelog &