หยุด socat ไม่ให้หยุดทำงานเมื่อปลายด้านอื่นปิดลง


12

ฉันต้องการเปลี่ยนเส้นทางอินพุตและเอาต์พุตของแอปพลิเคชันไปยังซ็อกเก็ตยูนิกซ์และเชื่อมต่อกับซ็อกเก็ตนั้นจากเซสชันอื่น สิ่งที่ฉันทำจนถึงตอนนี้คือ:

ที่ด้าน "เซิร์ฟเวอร์":

socat EXEC:"command" UNIX-LISTEN:/tmp/comm

และด้าน "ลูกค้า":

socat UNIX-CONNECT:/tmp/comm -

มันใช้งานได้ค่อนข้างดี แต่ทันทีที่ฝั่งไคลเอ็นต์socatยกเลิกเซิร์ฟเวอร์ก็จะหยุดทำงานเช่นกัน แต่ฉันต้องการให้มันทำงานต่อไปและเชื่อมต่อใหม่ในภายหลัง ... ฉันจะทำให้สำเร็จได้อย่างไร

คำตอบ:


12

คุณต้องใช้forkตัวเลือกที่จัดการการเชื่อมต่อในกระบวนการลูกทำให้กระบวนการหลักพยายามจัดการการเชื่อมต่อเพิ่มเติม

ในสถานีแรก:

$ socat - UNIX-LISTEN:/tmp/comm,fork

ในเทอร์มินัลที่สอง:

$ socat UNIX-CONNECT:/tmp/comm -

กดCtrl+ Cในเทอร์มินัลที่สองสลับไปที่เทอร์มินัลแรกและดูว่าเซิร์ฟเวอร์ของคุณยังคงทำงานอยู่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.