ฉันมี ARM คณะ mini2440 และฉันได้ใส่ฐาน Debian ระบบ 6.0 multistrap
ที่มันใช้
ฉันเคยtmux
เรียกใช้หลายกระบวนการในหน้าต่างที่ต่างไปจาก/etc/rc.local
นี้ ฉันเชื่อมต่อกับบอร์ดโดยใช้พอร์ตอนุกรมและรายการ inittab เพื่อเรียกใช้getty
บนพอร์ตนั้น ฉันใช้picocom
เป็นตัวสื่อสารแบบอนุกรม
เมื่อรูทล็อกอิน~/.bashrc
ให้แนบเขาเข้ากับเซิร์ฟเวอร์ tmux ที่รันอยู่แล้วและสามารถติดตามกระบวนการได้อย่างง่ายดาย exec tmux attach-session -t "main"
คำสั่งที่เกิดขึ้นจริง tmux รันด้วยการกำหนดค่าเริ่มต้น
ทุกอย่างทำงานได้ยกเว้นหนึ่งในกระบวนการ (เชลล์สคริปต์รอบ ๆpppd
) ไม่ได้รับCtrlcจากเทอร์มินัลในขณะที่กระบวนการอื่นทำ ยังใช้Ctrl\งานได้ ยังใช้ kill -INT <pppd_pid>
งานได้ แต่ใช้kill -INT <shellscript_pid>
ไม่ได้
ฉันต้องCtrlcทำงานจริงๆ เกิดอะไรขึ้นกับการตั้งค่านี้
แก้ไข: นี่คือผลลัพธ์ของstty -a
ในเชลล์สคริปต์ก่อนหน้านี้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
เนื่องจากเป็นเพียงpppd
กระบวนการที่มีปัญหานี้ฉันคิดว่ามีบางอย่างเกี่ยวข้องกับมันหรือการกำหนดค่า แต่เมื่อฉันทำงานpppd
นอก tmux นั้น Ctrl-C ทำงาน pppd
ทำงานด้วยnodetach
ตัวเลือกจึงอยู่ในส่วนหน้าของเทอร์มินัล
ฉันยังทดสอบบนเครื่อง dev ของฉัน (Debian 6.0 บน amd64) ด้วยผลลัพธ์เดียวกัน
^
และ Ctrl-C เพิ่มC
ให้กับมัน
trap
คำสั่งในเชลล์สคริปต์หรือไม่
pppd
ไม่ได้พูดในสิ่งที่เปลือกต้นแบบตัดสินใจที่จะทำกับ SIGINT โดยตรง ลองเขียนเชลล์สคริปต์ตัวจิ๋วที่เรียกใช้ / bin / sleep 600 และส่งเชลล์ประมวลผล SIGINT คุณจะเห็นสิ่งเดียวกัน
stty -a
แสดงintr = ^C
? ถ้าไม่การintr
ตั้งค่าคืออะไร? (หมายเหตุ:stty -a | grep intr
จะไม่ทำงานเนื่องจากจะทำให้stty
เขียนไปยังไพพ์แทนที่จะเป็น tty ของคุณ) Ctrl-V Ctrl-C echo^C
หรือไม่? ถ้าไม่มันสะท้อนอะไร