Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux ';strace vim/nano';(Ubuntu)_Linux_Ubuntu - Fatal编程技术网

Linux ';strace vim/nano';(Ubuntu)

Linux ';strace vim/nano';(Ubuntu),linux,ubuntu,Linux,Ubuntu,我在一本书中读到过strace,当时我正在试验它 我试着给它奇怪的输入,所以我试着给nano/vim作为输入。e、 g strace vim 我注意到,在这两种情况下,输出都非常奇特 一旦运行,任何涉及键盘和鼠标的后续操作都会在终端内动态显示strace输出,但格式非常奇怪: [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)

我在一本书中读到过strace,当时我正在试验它

我试着给它奇怪的输入,所以我试着给nano/vim作为输入。e、 g

strace vim
我注意到,在这两种情况下,输出都非常奇特

一旦运行,任何涉及键盘和鼠标的后续操作都会在终端内动态显示strace输出,但格式非常奇怪:

[0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)                                                                                                 select(1select(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeosesselect(1, [0select(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout) [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)lect(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)                                                                                                 select(1select(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeosesselect(1, [0fsync(3)                                = 0eout)ut)t(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)lect(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)                                                                                                 select(1select(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timselect(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)eout)ut)t(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)lect(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)
                                     select(1select(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timselect(1, [0], [], [0], NULL {tv_sec=0, tv_usec=0}) = 0 (Timeout)ut)t(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)lect(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)
                                                                                                 select(1select(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeosesselect(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)ut)t(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)ect(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)                                                                                                  select(1select(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeosesselect(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)ut)t(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)ect(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)                                                                                                  write(1,select(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeosesselect(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)ut)t(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)te(1, "\33[?25lt\33[25;267H5\33[1;25H\33[?25h", 30t                                                                                             6
    select(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeosesselect(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)ut)(1, "\33[?25le\33[25;267H7\33[1;27H\33[?25h", 30e                                                                                          7
                                                                select(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeosesselect(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)ut)                                                                               8
-- INSERT --                                                                                                                                                                         sesselect(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)ut)                1,2           All) = 58                                                                                                                                                                                                                                            sesselect(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)ut)], {tv_sec=0, tv_usec=0}) = 0 (Timeout)
                    sewselect(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)fsdgaeeeaeeec=0, teteaeteae) = 0 (Timeout)
                                                                                wriwrite(1, "\33[?25lqhdfffsdgaeee\33[11Cteae\33[25"..., 50qhdfffsdgaeee_sec=0, teateae=0}) = 0 (Timeout)
                                                                                                                                                                                         select(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)
                                                                                                                                                                                                                                                     select(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)
                        select(1, [0], [], [0], {tv_sec=0, tv_usec=0}) = 0 (Timeout)
                                                                                    write(1, "\33[1;2H\33[?25h", 12                                                                                                                                                      7
在尝试在vim内执行写入操作时,在终端显示的输出中,有一个是与我键入的杂项字符相关的strace输出,请参阅:

 wriwrite(1, "\33[?25lqhdfffsdgaeee\33[11Cteae\33[25"..., 50qhdfffsdgaeee_sec=0, teateae=0}) = 0
有人能解释为什么运行时输出如此奇怪:

strace nano

?


也就是说,为什么每当按下键盘或鼠标上的按钮时,或者每当使用鼠标执行滚动操作时,终端中的输出都会更新?有人能从I/O的角度具体解释strace在本例中是如何与vim交互的吗?

您正在跟踪一个应用程序,该应用程序在strace登录到该窗口的同时试图控制该窗口。相反,请尝试以下方法:

在窗口1中,运行:

strace -o $HOME/tracefile vim
在窗口2中,运行:

tail -f $HOME/tracefile
您可以在窗口1中与vim交互,并查看vim在窗口2中的调用。
完成后,窗口2中的CTRL-C将停止尾部。

您正在跟踪一个应用程序,该应用程序试图在strace登录到该窗口的同时控制该窗口。相反,请尝试以下方法:

在窗口1中,运行:

strace -o $HOME/tracefile vim
在窗口2中,运行:

tail -f $HOME/tracefile
您可以在窗口1中与vim交互,并查看vim在窗口2中的调用。
完成后,窗口2中的CTRL-C将停止尾部。

到底有什么奇怪之处?什么繁杂的字符?到底什么是奇怪的?什么杂文?