我正在向shell编写一个函数,我需要将输出重定向到文件。例如,用户写入:ls -l >> file
和ls -l
应写入文件。几乎所有事情都是正确的,但在第一次调用我的函数程序后停止,我不能写任何其他东西。下面我介绍我的功能,我希望有任何解决问题的线索:
void execute2(char *command, char **argv, char **argv2)
{
pid_t pid;
int status;
if ((pid = fork()) < 0)
{
printf("*** ERROR ***\n");
exit(1);
}
else if (pid == 0)
{
close(1);
parse(command, argv, argv2);
int output = open(*argv2, O_APPEND | O_WRONLY);
dup2(output,1);
if (strcmp(argv[0], "exit") == 0)
exit(0);
if (execvp(*argv, argv) < 0)
{
printf("*** ERROR ***\n");
exit(1);
}
close(output);
}
else
{
while (wait(&status) != pid);
}
}
command
是来自用户的命令,argv
是指令和参数的一部分,argv2
是输出文件。
答案 0 :(得分:-2)
@Jonathan Leffler我检查了这个,我认为它没有解决问题。我建议当我第一次调用execute2时,它可以正常工作,但我从未完成过这个过程。或者我没有找不到什么