Bash: menerima pesan dari proses latar belakang

0

Saya mengirim data melalui cansend untuk vcan0, pada saat yang sama saya mendengarkan pesan yang sudah dikirim vcan0 menggunakan candump vcan0 perintah

Untuk beberapa alasan, saya tidak akan menerima pesan apa pun, ketika mengirim data ke vcan0 melalui skrip, tetapi ketika saya mengirim data melalui terminal, skrip menerima data, entah bagaimana.

cansend vcan0 004#0152FEE400000000 # trying to send data (doesnt work)
while true;
do
  msg_candump=$(candump vcan0) # read vcan0
  if [[ ${#msg_candump} > 1 ]]; then #received msg
    echo $msg_candump
  fi
done
david114
sumber

Jawaban:

1

Anda menggunakan karakter hash # sebagai data untuk dikirim tetapi karakter ini disediakan untuk mengomentari shell

Cobalah seperti itu:

( # Let run listener in background before trying to send to CAN
  while true;
  do
    msg_candump="$(candump vcan0 -T 1000)" # read CAN for 1 second
    if [[ ${#msg_candump} > 1 ]]; then #received msg
      echo "$msg_candump"
    fi
    sleep 0.025 # Give system a little breath
  done
) &
PID=$!

cansend vcan0 '004#0152FEE400000000' # <- quotes are matter 
sleep 5
kill -9 $PID
Alex
sumber
terima kasih banyak .. saya menambahkan msg_candump="$(candump vcan0 -T 1000)" untuk ini dan itu berfungsi sekarang.
david114
@ david114 Tidak masalah, saya senang itu membantu Anda. saya tambahkan -T 1000 pilihan jawaban, jadi mungkin bermanfaat untuk orang lain
Alex