こんにちは私はUNIXシェルに取り組んでおり、2つの問題が発生しています。誰か助けてくれないかと思っていました。私の最初の問題は、シェルが子プロセスの終了を待機していないことです。子プロセスの実行中に、実際にさらにコマンドを入力することができます。私の2番目の問題は、次の2行にあります。シェルに何も表示されません。
fprintf(stderr, "Process name is: %s\n", commandArgv[0]);
fprintf(stderr, "Child pid = %d\n", pid);
ユーザーが入力したプロセスを実行するには、次の方法があります。つまり、firefox、ls-aなどです。
void execute(char *command[], char *file, int descriptor){
pid_t pid;
pid = fork();
if(pid == -1){
printf("error in execute has occurred\n");
}
if(pid == 0){
execvp(*command,command);
fprintf(stderr, "Process name is: %s\n", commandArgv[0]);
fprintf(stderr, "Child pid = %d\n", pid);
wait(&status);
exit(EXIT_SUCCESS);
}
else{
printf("ignore for now\n");
}
}
ここで、executeコマンドを呼び出します。正常に動作し、プロセスを起動しますが、終了するのを待ちません。
execute(commandArgv, "STANDARD",0);
君たちは私が間違っているかもしれないことを知っていますか?いつもありがとうございます。これについて私を助けてくれてありがとう。