入力が配列へのポインターであると仮定し、各要素に "ls -l" を位置 0 に格納し、次に cat helloworld.txt を位置 1 に格納するというように、ls、cat、 pwd、それを実行します。基本的に、私がやっていることは、これらすべてのコマンドを含むファイルを持っていることです。最初に、char *input[10] として宣言されている入力変数にそれらを格納します。これで、その配列に必要なものが揃い、ls、cat などの個々のメイン コマンドを抽出できるようになり、それらすべてを実行したいと考えています。
例えば、
位置 0 に ls -l があり、最初の変数に ls があり、それを execvp に渡したい場合、位置 1 に cat sample.txt がある可能性があるため、最初の変数は cat になり、それを execvp に渡します。 cat sample.txt(input[i])をexecvpへ。何らかの奇妙な理由で、これは機能していません。これらすべてのコマンドを execvp のループで実行して、完了するとすべてのコマンドが正常に実行されるようにするにはどうすればよいですか。これが私の試みです。最初のループの最後で、execvp を実行し、それが終了することを期待してから、さらに入力を抽出します。
手伝ってください。
for(i=0; i<lineCount; i++)
{
first = malloc(sizeof(char)*50);
for(j=0; j<strlen(input[i]); j++)
{
if(input[i][j]!=' ')
{
first[j]=input[i][j];
}
else
{
break;
}
}
execvp(first, input[i]);
}
私は execp(first, input) をやってみましたが、それもうまくいきませんでした。