我正在做一个小的 c 程序来测试一些 Unix 命令。我为用户提供他可以测试的选项,然后允许他输入他的选项。如果用户输入数字 2 作为他的选择,则应运行以下代码,该代码正在测试文件上的 grep 命令。但是当我输入“模式”时代码有问题,它开始一个无限循环,任何帮助?!我在 Unix 编程方面没有太多经验。当我输入数字 2 作为我的选择时出现问题,这意味着它是在 case no.2
#include <unistd.h>
#include <sys/types.h>
#include <errno.h>
#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>
int main(){
char pattern[50];
int userInput;
pid_t childPID;
char filename[50];
FILE *file;
printf("Enter a File name:");
scanf("%s",filename);
file = fopen(filename, "r");
do{
printf("Enter what u want to do with the file:\n");
printf("1.Compress the file.\n");
printf("2.Search for a pattern at the file\n");
printf("3.Read the file (display the file content at the terminal)\n");
printf("4.Eject the program\n");
scanf("%d",&userInput);
switch(userInput){
case 1:
if(childPID == 0){
execl("/bin/gzip","gzip",filename,NULL);
exit(1);
}
break;
case 2: childPID = fork();
if(childPID ==0){
printf("Enter the pattern you want to search about:");
scanf("%s",pattern);
execl("/bin/grep","grep",pattern,filename,NULL);
}
break;
}
}while(userInput != 4);
return 0;
}