0

我正在使用一个字符串变量进行系统调用,该字符串变量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
}
4

0 回答 0