如何在使用 popen() 时绕过 cmd 中的 y/n 个问题
How to bypass y/n questions in cmd while using popen()
今天我在我的程序中遇到了一个严重的错误,它只是一个小代码,它使用 popen() 传递命令并将其结果通过管道传输到我使用 fgets()
读取的文件描述符结果, date
命令的问题我的程序一直挂起(等待),原因是我们知道在发出 date
后它会显示当前日期并发出是或否的问题,如下所示.
The current date is: Fri 08/21/2015
Enter the new date: (mm-dd-yy)----this was shitting my code!!!!
我只想让我的程序跳过这个问卷。
注意:下面代码中的字符串"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;
}
}
感谢 Petesh。
我已经改成2>&1<nul
而不是2>&1
,程序现在没有挂起,
此解决方案的关键是添加 <nul
给出一些默认值作为提示的答案。
今天我在我的程序中遇到了一个严重的错误,它只是一个小代码,它使用 popen() 传递命令并将其结果通过管道传输到我使用 fgets()
读取的文件描述符结果, date
命令的问题我的程序一直挂起(等待),原因是我们知道在发出 date
后它会显示当前日期并发出是或否的问题,如下所示.
The current date is: Fri 08/21/2015
Enter the new date: (mm-dd-yy)----this was shitting my code!!!!
我只想让我的程序跳过这个问卷。
注意:下面代码中的字符串"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;
}
}
感谢 Petesh。
我已经改成2>&1<nul
而不是2>&1
,程序现在没有挂起,
此解决方案的关键是添加 <nul
给出一些默认值作为提示的答案。