rxseger / linuxproblems

Problems I encountered with Linux-based software
1 stars 0 forks source link

SSH: processes hang around after terminating, hogging device #6

Open rxseger opened 8 years ago

rxseger commented 8 years ago
rf $ ssh pi rx_fm -d driver=rtlsdr,serial=2 -f 97.7M -M wbfm -E wav - | play -
Found 2 device(s):
  0: available=Yes, driver=rtlsdr, label=Generic RTL2832U OEM :: 2, manufacturer=Realtek, product=RTL2838UHIDIR, rtl=0, serial=2, tuner=Rafael Micro R820T, 
  1: available=No, driver=rtlsdr, label=Generic RTL2832U OEM :: 00000001, manufacturer=Realtek, product=RTL2838UHIDIR, rtl=1, serial=00000001, tuner=, 

^C

rf $ ssh pi rx_fm -d driver=rtlsdr,serial=2 -f 97.7M -M wbfm -E wav - | play -
  0: available=No, driver=rtlsdr, label=Generic RTL2832U OEM :: 2, manufacturer=Realtek, product=RTL2838UHIDIR, rtl=0, serial=2, tuner=, 
  1: available=No, driver=rtlsdr, label=Generic RTL2832U OEM :: 00000001, manufacturer=Realtek, product=RTL2838UHIDIR, rtl=1, serial=00000001, tuner=, 

SSHing in shows the old rx_fm process I launched over SSH is still running:

pi@raspberrypi:~ $ ps ax|grep rx_fm
 9773 ?        Ssl    0:10 rx_fm -d driver=rtlsdr,serial=2 -f 97.7M -M wbfm -E wav -
 9802 ?        Ssl    0:00 rx_fm -d driver=rtlsdr,serial=2 -f 97.7M -M wbfm -E wav -
 9824 pts/5    S+     0:00 grep --color=auto rx_fm

workaround: killall rx_fm, but how can I prevent this from happening in the first place?

Leftover processes are especially problematic with rtl/rx tools, because they maintain control of the USB device (via libusb), making it unavailable to other processes.