【发布时间】:2015-03-10 10:39:26
【问题描述】:
我正在开发个人 shell 并开始实现重定向。
'' 仅适用于 cat 命令。
这里是处理'>'效果的代码:
int write_in_file(char **tab, int fd)
{
int count;
char i;
if (strncmp("cat", tab[0], 3) == 0)
{
while ((count = read(0, &i, 1)) > 0)
write(fd, &i, 1);
exit(1);
}
else if (strncmp("ls", tab[0], 2) == 0)
{
/* Here handle other commands then cat */
}
else
return (0);
}
如你所见,当shell识别时
cat > file
它做了它应该做的事情:让用户写入所述文件。 但现在我希望处理其他命令,例如
ls > file
man ascii > file
你们知道我该怎么做吗? 如果您需要任何精度,请告诉我,
编辑:请注意,我在此函数中处于子进程中。
提前致谢。
【问题讨论】:
-
当您的代码“运行良好”时,您为什么要
exit(1)?退出状态为 1 表示失败。 -
Man
fork、exec或 google fork/exec -
你说得对,我马上改。
-
顺便说一下,当我在这个函数中时,我在子进程中。
-
你为什么要尝试实现
cat? (您没有按照pubs.opengroup.org/onlinepubs/9699919799/utilities/… 的要求正确实施-u)。而不是实现该工具,您应该简单地exec。您需要做的是将适当的文件描述符复制到重定向路径并调用exec。