ユーザーは行を読み、最初のWordをexecvpのコマンドとして保持します。
彼が) "cat file.txt" ...と入力するとしましょう...コマンドはcatになります。しかし、このexecvp()
の使用方法がわかりません。いくつかのチュートリアルを読みましたが、まだ取得できませんでした。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *buf;
char command[32];
char name[32];
char *pointer;
char line[80];
printf(">");
while((buf = readline(""))!=NULL){
if (strcmp(buf,"exit")==0)
break;
if(buf[0]!=NULL)
add_history(buf);
pointer = strtok(buf, " ");
if(pointer != NULL){
strcpy(command, pointer);
}
pid_t pid;
int status;
if ((pid = fork()) < 0) {
printf("*** ERROR: forking child process failed\n");
exit(1);
}
else if (pid == 0) {
if (execvp(command, buf) < 0) {
printf("*** ERROR: exec failed\n");
exit(1);
}
}
else
while (wait(&status) != pid)
;
free(buf);
printf(">");
}///end While
return 0;
}
最初の引数は実行するファイルで、2番目の引数は manページ で指定されたファイルへの適切な引数を表すヌルで終わる文字列の配列です。
例えば:
char *cmd = "ls";
char *argv[3];
argv[0] = "ls";
argv[1] = "-la";
argv[2] = NULL;
execvp(cmd, argv); //This will run "ls -la" as if it were a command