Я использую socat для подключения к серверу и передачи входящих данных в файл, который может быть прочитан другим процессом.Это однонаправленные данные (от сервера к процессу получения).
Поскольку socat завершает работу, когда мой сервер отключается или отключается, я использую цикл, чтобы socat мог восстановить соединение.Мой код ниже.
Проблема в том, что когда socat переподключается, он также открывает новый файл для записи данных, переходя от dev / pts / 0 к dev / pts / 1, возможно, потому что мой процесс получения ещефайл открыт для чтения.
Процесс чтения не знает об изменении файла и, следовательно, не может прочитать данные, поступающие в новый файл.
Есть ли способ, чтобы socat продолжалзаписать в тот же файл после переподключения?
Или какой-то другой метод, который может лучше обработать соединение?
Спасибо
Я уже консультировался по аналогичной теме здесь:
Переподключение соединения socat после сбоя сети
, но это немного другая проблема.
Я также пытался использовать метод fork, но в результате я подключился к серверу с несколькими дочерними процессами.когда я просто хочу одно соединение.(Я подозреваю, что метод fork предназначен для socat как сервер, а не как клиент).
Мой код здесь:
#!/bin/bash
file="/dev/ttyv0"
while :
do
if [ -f "$file" ];then
cho "$file found,go to connect"
else
socat -d -d -U pty,link=/dev/ttyv0,raw,crnl tcp:192.168.0.161:9800
fi
done
Еще раз спасибо