execveで問題が発生しています。bashシェルと同じように機能するシェルを作成しようとしていますが、フォークされた子がコマンドを実行する際に問題が発生します。これが私が子供のために持っているものです。cmdは、ユーザーが入力したコマンドを含むchar *です。ただし、このプログラムを実行すると、perrorから次のエラーが発生します。
execve error: No such file or directory.
単純なlsを使用してプログラムを試しましたが、path = "/ bin / ls"を作成して実行する必要があります(これが私のlsコマンドの場所であることを確認しました)が、それでも文句を言います。私は何が間違っているのですか?ありがとう!
if(pid == 0)
{
// Parse the command
char * word = strtok(cmd, " ");
char path[128] = "/bin/";
strcat(path, word);
// Execute the process
char * newenvp[] = { NULL };
char * newargv[] = { path, NULL };
ret = execve(path, newargv, newenvp);
if(ret == -1)
perror("execve error");
return EXIT_SUCCESS;
}