0

次のコードを実行し、引数を "ls - l" として指定すると、アボート トラップ :6 が発生し、プログラムが終了します。しかし、入力として ls を指定すると、プログラムは正常に動作します。

ここで :act_arg には文字列 "ls" "-l" が含まれます

 void function_run()
    {
        char bar[100] = "/bin/";
        char f_arg[100];
        int baz;
        int qux = 1;
        strncat(bar,act_arg[0],sizeof(act_arg[0]));
        while(act_arg[qux] != NULL)
        {
            strncat(f_arg,act_arg[qux] ,sizeof(act_arg[qux]));
        }

        //execute
        if(fork() == 0)
        {
            baz = execlp(bar,act_arg[0],act_arg[1],NULL);
            if(baz == -1)
            {
                eng_run();      //to run execlp from normal lang run
                //wait(NULL);
            }
            else
            {
                //wait(NULL);
                exit(0);
            }
        }
        fflush(stdout);
    }
4

1 に答える 1