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 getty
trên cổng đó. Tôi sử dụng picocom
như là người giao tiếp nối tiếp.
Khi root đăng nhập, ~/.bashrc
gắ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 -a
tậ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à pppd
quá 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 pppd
bên ngoài tmux, Ctrl-C hoạt động. pppd
chạy với nodetach
tù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ự.
^
và Ctrl-C thêm a C
vào đó.
trap
lệnh trong kịch bản shell?
pppd
khô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.
stty -a
hiển thịintr = ^C
? Nếu không,intr
cài đặt là gì? (Lưu ý:stty -a | grep intr
sẽ không hoạt động, vì nóstty
ghi vào đường ống thay vì vào tty của bạn.) Ctrl-V Ctrl-C có lặp lại^C
không? Nếu không, nó lặp lại những gì?