現在、文字列の行を読み取って解析しています。そのために次の変数を使用しています:char **parsed
とchar *parsed_arguments[64]
. これを解析するために使用するコードは次のとおりです。
char newcommand []
parsed = parsed_arguments;
*parsed++ = strtok(newcommand,SEPARATORS); // tokenize input
while ((*parsed++ = strtok(NULL,SEPARATORS)))
その部分は問題なくダンディですが、parsed_arguments に追加しようとすると問題が発生します。私が達成しようとしているのは、ファイルからテキストを読み取り、 に配置しchar buffer[]
、トークン化し、 に追加して、 をparsed_arguments
使用してこれらの引数をプログラムに渡すことができるようにすることexecvp
です。これまでのところ、テキストを読み取ってバッファに配置することができ、トークン化も試みましたが、最後の部分で混乱します。私が取り組んでいることを詳しく説明するコードは次のとおりです。
if(file_In)
{
//strcpy(input_File_Name,parsed_arguments[input_Index]);
switch(pid =fork())
{
case -1:
printf("fork error, aborting\n");
abort();
case 0:
parsed_arguments[input_Index-1] = NULL;
input_File = freopen(parsed_arguments[input_Index],"r",stdin);
fgets(buffer, 1023, input_File);
buf = parsed_buf;
*buf++ = strtok(buffer,SEPARATORS); // tokenize input
while ((*buf++ = strtok(NULL,SEPARATORS)))
//strcat(parsed, buf); // invalid
printf("The buffer holds: %s\n", buffer);
execvp(parsed_arguments[0],parsed_arguments);
break;
default:
waitpid(pid,NULL,WUNTRACED);