我正在尝试运行通过popen发送的命令,但是如果它无效(例如kfjhsfdhj)我想发送消息而不是输入我的else语句。
根据我的理解,如果发送了无效命令,则从popen返回NULL(我可能错了!)。
我尝试了以下代码,但它似乎不能像我想要的那样工作,任何想法?
char ans[10000];
FILE* file = popen("blabla", "r");
if(file == NULL){
printf("The command you wish to execute is invalid.\n");
//I want this output and the else to not execute
} else {
char buffer[10000];
while(fgets(buffer, sizeof(buffer), file) != NULL){
strcat(ans,buffer);
}
pclose(file);
//export data to file
FILE *result = fopen("results.txt", "a");
if(result != NULL){
num+=1;
fprintf(result, "Query no. %d:\n", num);
fputs(ans, result);
fclose(result);
} else {
printf("Error with result file!\n);
}
}
当我运行它时,我得到sh: 1: blabla: not found
并且我在结果文件中输入Query no. X
而没有任何内容。另一个命令将正确附加到该文件。
使用有效命令按预期工作。