Linux で単純なシェルを作成していますが、コマンドをバックグラウンドで実行するのに問題があります。
これまでの私のコードは次のとおりです。
create command,argv and check if it is to be ran in the background &
enter this code:
if(strcmp(command,"cd")==0)
{
chdir(argv[1]);
}
else if(strcmp(command,"clr") == 0)
{
if ((pid = fork()) == 0)
{
execvp("clear",argv);
}
wait(&status);
}
else
{
if ((pid = fork()) == 0)
{
execvp( prog, argv );
}
wait(&status);
}
command と argv は、ユーザーから取得したものです。
「&」がコマンドの最後の部分である場合、バックグラウンドでコマンドを実行する必要があります。私はすでにbgのブール変数でそれをチェックしました。しかし、WAITPID() 関数に問題があり、どこに行くのかわかりません。