我正在为 in 中的bash
命令实现一个简单的 shell c
。
我已经解析了我想要使用的行(我将输入存储stdin
到一个char**
数组中)。现在我要处理以下情况:
{ >, <, >> , & , | }
小于,大于,重定向,在后台和管道中运行命令。
如果我想这样做,我试图理解一些事情:
someApplication > file
或者
someApplication < file
或者
someApplication >> file
对实施这些案例有什么好处吗forking
?(含义,使用father
&son
过程)
我看到它的方式,只有当我有一个管道,比如 <code>ls|grep great</code> 时,fork
才会更有效率,因为一个进程会在目录中显示文件,而另一个进程会显示目录中的文件有人会使用儿子的输入来完成管道的右侧。
谢谢 。
编辑:
void handleLessThan(char** arguments , int * argumentsCount)
{
int fd_fork = fork();
int fd_sourceFile;
char sourceFile[30];
if (fd_fork == 0) // son is running now
{
strcpy(arguments[*argumentsCount],sourceFile);
fd_sourceFile= open(sourceFile, O_RDONLY);
dup2(fd_sourceFile, 0); .
execvp(arguments[0],arguments[1]);
}
else
{
// parent
??
}
}