私はいくつかのUnixコマンドをテストするための小さなcプログラムを実行しています。私はユーザーにテストできる選択肢を提供し、ユーザーが自分の選択肢を入力できるようにします。ユーザーが選択として番号2を入力した場合、ファイルに対してgrepコマンドをテストする次のコードを実行する必要があります。しかし、「パターン」を入力すると、コードに問題が発生し、無限ループが開始されます。Unixプログラミングの経験はあまりありません。番号2を選択すると問題が発生します。これは、ケース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;
}