如何在使用popen()时绕过cmd中的y / n问题

时间:2015-08-21 12:50:31

标签: c++ c cmd popen

今天我一直在我的程序中遇到一个严重的错误,它只是一个很小的代码,使用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;
    }
}

1 个答案:

答案 0 :(得分:1)

感谢Petesh。

我已更改为2>&1<nul而不是2>&1,该程序现在没有挂起, 此解决方案的关键是添加<nul提供一些默认值作为提示的答案。