我正在使用一个字符串变量进行系统调用,该字符串变量search
基本上/bin/ls
使用用户提供的附加变量调用 ,例如ls file1
.
当标准输出包含错误消息时,我想重复此操作,因为当前目录中不存在输入文件的名称(如果从 shell 调用命令会产生什么,例如:)ls: No such file or directory
。
但是,以下代码在每次运行时都有效——无论文件是否存在——它都会打印额外的信息,如错误或文件名。我的结论是,这是因为system(search)
函数运行并打印到标准输出。
如何避免打印系统调用,但仍然重复它?我可以改用系统调用的标准输出,抓取它,将其复制到字符串变量,然后将其用作开始/结束循环的结果吗?
while (system(search) != 0) {
if (system(search) == 0) {
printf("\nFile <%s> was found succesfully in current directory\n\n",reference);
}
printf("\nPlease re-enter reference genome file name: ");
scanf("%s", reference);
strcpy(search, ""); //Empty string
strcpy(search, ls);
strcat(search, reference); //Re-insert ls command appending NEW reference input
}