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