以 root 身份运行应用程序时如何获取标准输出

How can I get stdio output when running application as root?

本文关键字:获取 标准输出 何获取 身份 root 运行 应用程序      更新时间:2023-10-16

我正在尝试以root身份运行我的应用程序,因为我需要访问计算机上的低级硬件。

当我运行命令时:

./application_name

。它可以工作,但给出一个需要root的错误。但是,当我运行这个时:

sudo ./application_name

。我没有得到终端输出。

我已经测试过,每次我以 root 身份在 Linux 上运行可执行文件时,它都不会将任何内容打印到终端。我该如何解决这个问题?

编辑:提供了一些测试用例(移动,所以不能打出太多):

sudo g++ test.cpp -o executable
sudo chmod +x executable

这适用于 Debian:

./executable

这不会:

sudo ./executable

测试.cpp:

#include <iostream>
int main() {
  std::cout << "Hello World!";
}

这种行为真的很奇怪。该应用程序的根权限应该不会影响 std 输出。例如,我做了一个简单的测试,一个"hello world",我在 Debian OS 上以 root 身份运行,并在终端中有输出。

说服自己应该有输出的一个简单的测试是重定向到文件。例如 sudo ./executable>输出.txt你会看到一切都应该没问题。

请注意,如果您没有来自简单"hello world"的输出,那应该很奇怪。