IO をリダイレクトする C プログラムを作成しようとしています。出力は簡単にできましたが、入力は難しいようです。たぶん私はそれをすべてよく理解していませんが、私は次のようなことをしています:
int redFile;
fflush(stdin);
myio = dup(0);
redFile = open(rhs, O_WRONLY, 0644);
dup2(redFile, 0);
close(redFile);
// Any scanf("%s", &buf) here should read from my redFile (correct?) into some buffer, buf[64] or something
fflush(stdin);
dup2(myio, 0);
close(myio);
これで、ファイル redFile からの文字列を含む buf[64] がいくつかありますが、これを char * lhs (プログラムで以前に設定) で指定されたコマンドへの入力にするにはどうすればよいですか。私のプログラム全体は、基本的に仮想シェルを作成するために execve() を使用しています。
次のようなものを処理できる必要があります。
入力.txt:
test1
test2
test3
tac < input.txt > output.txt
output.txt
test3
test2
test1