私は次のようなCコードを使用してユーザーにコマンドを渡すよう要求しています(UNIXで有効です)。そして、その文字列を配列に分割して実行する必要があります。ユーザがexecvp()で与えたコマンド。これはコンパイルされますが、execvpは動作しません。ユーザーの入力を配列に分割する方法に何か問題がありますか? PS:インクルードの一部は必要ではありませんが、最終的なプログラムではありません。ユーザーの入力を受け取り、execvpを実行する
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <signal.h>
main() {
char str[64];
int i =0;
char *p = strtok(str," ");
printf("Please give me a Unix command! :\n");
gets(str);
char *array[sizeof(str)];
while (p!=NULL) {
array[i++] = p;
p = strtok (NULL, " ");
}
execvp(str ,array);
perror("execvp");
}
私はこれを実行したときに私が得る出力は次のようになります。
Please give me a Unix command! :
ls -l
execvp: No such file or directory
を(http://stackoverflow.com/q/1694036/2173917)[ '()'、それは危険ですます使用しないでください]。代わりに['fgets()'](https://linux.die.net/man/3/fgets)を使用してください。 –