C++ 当以root用户身份运行应用程序时,如何获取stdio输出?

C++ 当以root用户身份运行应用程序时,如何获取stdio输出?,c++,linux,cout,C++,Linux,Cout,我正试图以root用户身份运行我的应用程序,因为我需要访问计算机上的低级硬件 当我运行命令时: ./application_name …它可以工作,但给出了一个需要root的错误。但是,当我运行此命令时: sudo ./application_name …我没有终端输出 我已经测试过,每次在Linux上以root用户身份运行可执行文件时,它都不会将任何内容打印到终端。我怎样才能解决这个问题 编辑:提供了一个测试用例(移动的,所以不能输入太多): 这适用于Debian: ./executabl

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

当我运行命令时:

./application_name
…它可以工作,但给出了一个需要root的错误。但是,当我运行此命令时:

sudo ./application_name
…我没有终端输出

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

编辑:提供了一个测试用例(移动的,所以不能输入太多):

这适用于Debian:

./executable
这并不是:

sudo ./executable
test.cpp:

#include <iostream>

int main() {
  std::cout << "Hello World!";
}
#包括
int main(){

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

一个简单的测试就是重定向到一个文件,比如sudo./executable>output.txt,你会发现一切都应该正常


请注意,如果您没有来自简单“hello world”的输出,这应该会很奇怪.

亲密投票者:为什么这是离题,而这是主题?这两个问题都是关于执行代码的:这个问题已经有五年了,发布的时候发布的发布准则非常不同。一个非常老的问题的存在并不意味着发布类似的问题是可以的。显然,这就是应用程序的行为。一些应用程序不生成输出(例如,
/bin/true
)。我们对该应用程序一无所知,因此无法帮助您找出它不生成任何输出的原因。请尝试
sudo echo hello
;它应该打印
hello
@CaptainObvlious其他相关的内容:并且它们没有关闭。请注意,您不会用换行符终止输出。添加

#include <iostream>

int main() {
  std::cout << "Hello World!";
}