0

我有一个程序可以接收来自用户的交互式输入。一切正常。我不想为这个应用程序做一些测试。我想从一个 bash 脚本传递多个命令。

首先,应用程序要求(使用 scanf)输入文件名。之后,应用程序进入交互模式,并在 while 循环中使用 fgets 从标准输入获取输入。

如何从 bash 脚本启动此应用程序?

应用启动:

 -asks for input file

 -enters interactive mode and waits for user commands

 -let's say we type in stdin the string "print_dog"

 -when the app receives the string "print_dog" it prints "dog" in a log file

 -and so on

我不想写一个 bash 脚本来测试这个应用程序。例如,如果我在交互式输入中写入 print_dog 2 次,则输出应该是

我想运行一个可以模拟这种行为的脚本(以某种方式从脚本传递输入文件并传递命令“print_dog”几次),然后检查日志文件并查看输出是否正确

int main(){
 char buff[100];
 FILE *fd = fopen("log_file", "r");
  while(1){
    fgets(buff, 100, stdin);
    buff[strlen(buff)-1] = '\0';
    if(strcmp(buff,"sth") == 0)
        fprintf(fd, "Something");
    if(strcmp(buff, "exit") == 0)
        break;
  }
  printf("Closing app\n");
  return 0
}
4

1 回答 1

1

你的意思是这个:

my_prog < a_text_file.txt

a_text_file.txt 包含来自用户的虚假交互式输入。

于 2013-05-30T13:29:48.953 回答