如果你有一个从 GUI 启动的可执行文件 *.out(比如在 Fedora 中按Alt+F2并输入它的名字),当该文件尝试读取或打印到标准输出时会发生什么?标准? 底层发生了什么。即使不是从终端启动,这些文件描述符也会被创建吗?它们可以访问吗?
答案1
所发生的情况与启动终端、&
在末尾运行命令行以在后台运行并在程序仍在运行时关闭终端基本相同。根据程序从 GUI 启动的具体方式,您可能能够访问标准错误或~/.xsession-errors
窗口管理器使用的等效文件。
通常,以这种方式启动的程序的标准输出和标准输入将无法访问;它们通常指向。但请注意,您可以使用和/dev/null
重定向输入和输出,例如。<
>
program < file.in > file.out
答案2
显然 - 如果它读取 stdin 形式,读取就会失败,如果它写入 stdout - 它会被丢弃,Stderr 会在 Lars 所说的地方收集。