如何grep XRDP版本号?

Rah*_*nge 4 grep version xrdp

无法通过在 ubuntu 14.04 上运行以下命令来 grep xrdp 版本行

$ sudo xrdp -v | grep -i "version"
Run Code Online (Sandbox Code Playgroud)

输出:空白

$ sudo xrdp -v 
Run Code Online (Sandbox Code Playgroud)

输出 :

logging configuration:
    LogFile:       /var/log/xrdp.log
    LogLevel:      4
    EnableSyslog:  1
    SyslogLevel:   4

xrdp: A Remote Desktop Protocol server.
Copyright (C) Jay Sorg 2004-2014
See http://www.xrdp.org for more information.
Version 0.9.0
Run Code Online (Sandbox Code Playgroud)

当尝试使用如下所示的其他程序时perl command

$ sudo perl -V | grep "version"
Run Code Online (Sandbox Code Playgroud)

输出 :

Summary of my perl5 (revision 5 version 18 subversion 2) configuration:
Run Code Online (Sandbox Code Playgroud)

如何获取版本 0.9.0 作为命令的输出!

Ark*_*zyk 5

xrdp写入 1,如图stdout所示strace,但看起来由于某些原因它缓冲了其输出。尝试这个:

$ unbuffer xrdp -v | grep Version
Version 0.9.4
Run Code Online (Sandbox Code Playgroud)

或者您可以使用stdbuf

$ stdbuf  -o0  xrdp -v | grep Version
Version 0.9.4
Run Code Online (Sandbox Code Playgroud)

  • 有趣的是,我找到了这种行为的根本原因。在 `common/os_calls.c` 中,他们使用 `_exit()` 而不是 `exit()`,正如 `man _exit` 所说:`Open stdio(3) 流不会被刷新。另一方面,_exit() 确实关闭打开的文件描述符,这可能会导致未知的延迟,等待挂起的输出完成。如果不希望出现延迟,则在调用 _exit() 之前调用 tcflush(3) 等函数可能会很有用。是否取消任何挂起的 I/O,以及在 _exit() 时可以取消哪些挂起的 I/O,取决于实现。 (3认同)