2017-10-04 18 views
5

Tôi chỉ muốn có một quy trình để mở thiết bị PTY được tạo bởi socat. Tôi đã sử dụng các bước sau để tạo thiết bị my_ser nhưng có thể đọc/ghi bằng nhiều quy trình.Khóa độc quyền Socat cho PTY

socat -t 0 INTERFACE:my_nw,type=2 PTY,mode=0777,rawer,link=/dev/my_ser

Tôi cố gắng để sử dụng socat -t 0 INTERFACE:my_nw,type=2 PTY,mode=0777,rawer,link=/dev/my_ser,ioctl-void=0x540c sử dụng PTY khóa độc quyền (TIOCEXCL), nhưng nó không hoạt động. Tôi có thể thấy IOCTL đang được thực thi, nhưng không có hiệu lực.

Tôi đang chạy trên máy Ubuntu

+0

Bạn đang cố gắng đạt được điều gì? –

+0

Thiết bị PTY ký tự được tạo/dev/my_ser không nên được mở bởi hai ứng dụng. Thiết bị này đang dịch ghi nối tiếp sang giao diện mạng. – Raj

+0

Xem thử nghiệm này có giúp đỡ không? https://github.com/craSH/socat/blob/c20699fced66696e243d785fdfcd2a94cf11e4cc/test.sh#L10568 –

Trả lời

5

Tôi đã hiểu cờ TIOCEXCL chi tiết hơn. Ứng dụng mở thiết bị đầu cuối PTY nên sử dụng cờ này để lấy khóa độc quyền. Nếu chúng ta sử dụng nó trong khi tạo PTY trong lệnh socat, nó không có hiệu lực. Nhưng nó cũng không đưa ra bất kỳ lỗi nào.

Do đó, ứng dụng sẽ gọi cờ ioctl và nó sẽ bị xóa khỏi đây.

Các vấn đề liên quan