私はUnixシェルをシミュレートする簡単なANSI Cプログラムを作っています。だから、fork()と内部の子プロセスを使って子プロセスを作成しています。与えられた(ユーザごとに)プログラムを実行するexec()を呼び出しています。ファイルからexec()への入力をリダイレクト
私がする必要があるのは、ファイルの内容をstdinにリダイレクトすることで、programというユーザーに送信することができます。私はこのような、そうしようとしています
Example: cat < file \\user wants run cat and redirect content of that file to it by typing this to my program prompt
:
...child process...
int fd = open(path_to_file, O_RDONLY);
int read_size = 0;
while ((read_size = read(fd, buffer, BUF_SIZE)) != 0) {
write(STDIN_FILENO, buffer, read_size);
}
close(fd);
execlp("cat", ...);
すべてがうまく行く、ファイルの内容を標準入力に書き込まれますが、ファイル全体を読んだ後、猫はまだ(入力待ちI)は、その入力が終了し、猫を伝える必要がありますが、私はどのように:-(?
任意のアイデアを理解することはできません?ありがとうございました!!!
素晴らしい!ありがとう、たくさんの男。私はこのコマンドを管理することもできますか? 'cat < file > out_file' dup2(...)関数を使用していますか? –
はい、追加の 'dup2(fd_out、1)'が必要です。 –
まだ 'execlp'の前に' close'を呼び出していますか? –