Ctrl-C không hoạt động với phiên không tách rời pppd


12

Tôi có một Bảng mạch Mini2440 và tôi đã sử dụng hệ thống Debian 6.0 cơ bản trên đó bằng cách sử dụng multistrap.

Tôi đã sử dụng tmuxđể chạy một số quy trình trong các cửa sổ không hoạt động từ /etc/rc.local. Tôi kết nối với bảng bằng cổng nối tiếp của nó và một mục inittab để chạy gettytrên cổng đó. Tôi sử dụng picocomnhư là người giao tiếp nối tiếp.

Khi root đăng nhập, ~/.bashrcgắn anh ta vào máy chủ tmux đang chạy và các quy trình có thể được theo dõi dễ dàng. lệnh thực tế là exec tmux attach-session -t "main". tmux chạy với cấu hình mặc định.

Mọi thứ đều hoạt động, ngoại trừ một trong các quy trình (tập lệnh shell xung quanh pppd) không nhận được Ctrlctừ thiết bị đầu cuối, trong khi các quy trình khác thì có. Cũng Ctrl\hoạt động. cũng kill -INT <pppd_pid>hoạt động, nhưng kill -INT <shellscript_pid>không.

Tôi thực sự cần Ctrlcphải làm việc. Có gì sai với thiết lập này?

Chỉnh sửa: đây là đầu ra của stty -atập lệnh shell, ngay trước pppd:

speed 38400 baud; rows 23; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

vì nó chỉ là pppdquá trình có vấn đề này, tôi nghĩ nó có liên quan đến nó hoặc cấu hình của nó, nhưng khi tôi chạy pppdbên ngoài tmux, Ctrl-C hoạt động. pppdchạy với nodetachtùy chọn, vì vậy nó vẫn ở trong nền trước.

Tôi cũng đã thử nghiệm nó trên máy dev của mình (Debian 6.0 trên amd64) với kết quả tương tự.


6
stty -ahiển thị intr = ^C? Nếu không, intrcài đặt là gì? (Lưu ý: stty -a | grep intrsẽ không hoạt động, vì nó sttyghi vào đường ống thay vì vào tty của bạn.) Ctrl-V Ctrl-C có lặp lại ^Ckhông? Nếu không, nó lặp lại những gì?
Keith Thompson

@KeithThndry Ctrl-V in a ^và Ctrl-C thêm a Cvào đó.
zaadeh

7
Điều này có vẻ quá rõ ràng, nhưng có một traplệnh trong kịch bản shell?
Keith Thompson

1
pppdkhông nói rõ cái vỏ bên dưới của nó quyết định làm gì với SIGINT trực tiếp. Hãy thử viết một tập lệnh shell nhỏ gọi / bin / ngủ 600 và gửi quy trình shell cho SIGINT, bạn sẽ thấy điều tương tự chính xác.
Andrew B

2
Tôi không biết tmux đủ tốt nhưng tôi nghi ngờ pppd phát hiện ra rằng nó không có thiết bị đầu cuối mặc dù chạy dưới tmux và sau đó bỏ qua tín hiệu INT. một dấu vết của pppd trong khi nó được bắt đầu, cũng như khi tmux được "Detatched" lần đầu tiên, có lẽ sẽ được kể.
Johan

Câu trả lời:


2

Bạn đã bao giờ nghĩ về màn hình givin GNU chưa? Thành thật mà nói tôi không có nhiều kinh nghiệm với tmux, nhưng màn hình luôn làm tốt công việc.


Màn hình thật gợi cảm và tuyệt vời. +1 cho bạn.
root

0

Hóa ra đó là một lỗi trong phiên bản cụ thể pppdđã được sử dụng trong bản phân phối. Tôi đã kiểm tra và các phiên bản trước và sau này pppdkhông có vấn đề này. Ngoài ra vấn đề không cụ thể đối với vòm và nền tảng này hay tmux. Nếu pppdđang được chạy bên trong tập lệnh shell, Nó không xử lý Ctrl-C, trong khi bên ngoài shell, nó không có vấn đề gì.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.