今天我一直在我的程序中遇到一个严重的错误,它只是一个很小的代码,使用popen()传递命令并将其结果传递给文件描述符,我使用fgets()
来读取结果,date
命令我的程序挂起(等待)的问题,原因如我们所知,在发出date
后,它会显示当前日期并发出是或否的问题,如下所示。 / p>
现在的日期是:2015年8月22日星期五 输入新的日期:(mm-dd-yy)----这是我的代码!!!!
我只是希望我的程序跳过此调查问卷。
注意:以下代码中的字符串“command”是我将从用户处收到的内容。
FILE *in;
char buff[512];
string cmd;
command += " 2>&1";
if (!(in = popen(command.c_str(), "r"))) {
status = "0"; // my logic don't bother:)
}
else {
while (fgets(buff, sizeof(buff), in) != NULL) {
cmd += buff;
}
}
答案 0 :(得分:1)
感谢Petesh。
我已更改为2>&1<nul
而不是2>&1
,该程序现在没有挂起,
此解决方案的关键是添加<nul
提供一些默认值作为提示的答案。