노트북과 휴대폰을 수동으로 연결하려고 합니다. bluez-utils
버전이 설치되어 있습니다 4.98-2ubuntu7
. 터미널에서 에이전트를 실행하면 다음을 얻습니다.
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>
휴대폰에서 페어링을 시도하면 핀코드 요청 라인이 인쇄됩니다. 메시지가 표시될 때 암호 키를 입력하면 장치가 인증됩니다. 이제 휴대폰에서 노트북으로 파일을 보낼 수 있습니다. 그러나 요청을 승인한 후 애플리케이션이 중단되고 제어권이 터미널로 다시 전달되지 않습니다.
왜 이런 일이 발생합니까? 제어권을 다시 얻으려면 어떻게 해야 합니까?
이는 추가 명령을 실행할 수 있는 권한이 부여된 후에 터미널을 사용할 수 있게 되는 인터넷에서 본 예와 반대되는 것 같습니다.
백그라운드에서 실행하는 것이 가능한 해결책이라는 것을 알고 있지만 페어링이 완료되면 특정 다른 작업을 실행해야 하기 때문에 포그라운드에서 실행하는 것을 선호합니다.
나는 이것을 사용해 보았습니다 :
bluetooth-agent "$PIN" 1> ./bluelog #Background run tested also
그러나 프로세스는 완료(또는 종료)될 때까지 파일에 출력을 쓰지 않으므로 bluelog
. 프로세스가 완료되기 전에 강제로 출력을 작성하는 방법이 있습니까?
답변1
이는 문제에 대한 해결 방법일 뿐입니다. 실제 지연 문제를 해결하는 방법에 대한 제안을 bluetooth-agent
환영합니다.
백그라운드에서 실행할 때 stdbuf
라인 버퍼링을 비활성화 하곤 했습니다 . 이렇게 하면 로그 파일이 실시간으로 업데이트되므로 수행해야 할 나머지 활동을 확인하고 실행할 수 있습니다.STDOUT
bluetooth-agent
stdbuf -o 0 bluetooth-agent "$PIN" 1> ./bluelog &