Strace
strace 輸出:禁用縮寫完全改變輸出
一個正常的
strace
電話給了我這個輸出:ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
我想查看其他終端標誌並嘗試
-v
過-e abbrev=none
:列印 environment、stat、termios 等呼叫的未縮寫版本。
但是這兩個選項都沒有(只是)顯示更多,而是:
ioctl(0, TCGETS, {c_iflags=0x5500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
查看程式碼,這些是唯一可用的行為。僅對於縮寫輸出,明確列印這四個標誌的波特率和狀態。否則,將列印十六進制值以為您提供血腥細節。您必須在其他地方尋找 termios 標誌。
if (abbrev(tcp)) { tprints("{"); printxval(baud_options, tios.c_cflag & CBAUD, "B???"); tprintf(" %sopost %sisig %sicanon %secho ...}", (tios.c_oflag & OPOST) ? "" : "-", (tios.c_lflag & ISIG) ? "" : "-", (tios.c_lflag & ICANON) ? "" : "-", (tios.c_lflag & ECHO) ? "" : "-"); return; } tprintf("{c_iflags=%#lx, c_oflags=%#lx, ", (long) tios.c_iflag, (long) tios.c_oflag); tprintf("c_cflags=%#lx, c_lflags=%#lx, ", (long) tios.c_cflag, (long) tios.c_lflag); tprintf("c_line=%u, ", tios.c_line);