当我执行以下代码并将参数作为“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);
}