bash
のコマンドに単純なシェルを実装してい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
??
}
}