我有一个目录,当我运行ls命令时,我知道它会像这样吐出错误:
ls: reading directory /mydir: Input/output error
我希望能够检测到我的代码中存在IO错误。
这就是我尝试过的:
void readLs(const std::string& name)
{
stringstream ss;
ss << "ls " << name;
FILE* apipe = popen(ss.str().c_str(), "r");
if(apipe == NULL)
{
cout << "Error opening popen" << endl;
return;
}
char line[256];
cout << __FILE__ << " " << __LINE__ << endl; //This is line 46
while ( fgets( line, 256 , apipe) )
{
string temp(line);
cout << "This is line: " << temp << endl;
memset(line, 0, 256);
}
cout << __FILE__ << " " << __LINE__ << endl; //This is line 53
pclose(apipe);
}
test.cpp 46
ls: reading directory /mydir: Input/output error
test.cpp 53
错误消息打印到屏幕,但是从管道读取时我没有收到错误消息。
谢谢,
答案 0 :(得分:0)
相反,从流中读取会读取命令 标准输出
http://man7.org/linux/man-pages/man3/popen.3.html
您正在读取被调用程序的标准输入,该输入为空。错误消息将写入标准输出。尝试执行data={this.props.datasets[0]}
data={this.props.datasets[1]}
。