2011-07-06 13 views
1

埋め込まれたluaスクリプトを持つCアプリケーションを作成しています。 LuaスクリプトはSTDINからの入力を受け取ります。だから、ときに私はそれがためのようだシェルからスクリプトを実行している:C言語の埋め込みLuaはSTDINからの入力を受け取ります

lua myscript.lua < datafile* 

私はCのコード内からこれを実現するにはどうすればよいですか?

ありがとうございます。

+0

あなたは 'your program

+0

どちらも少しです。私はおそらくそれを信じられないくらいうまく説明しなかったでしょう。プログラム(これはLuaのパーサースクリプトのためのラッパーのようなものです)では、プログラム内でデータファイル(またはデータファイル、これは後でFIFO名前付きパイプになる可能性があります)から各行を取得しています。私はluaパーサにstdinとしてそれを送るためにそれぞれの行を持っていると思っています。 – daelious

答えて

1

利用datafile上の記述0(STDIN)とopen(2)によって返された記述子の上dup2(2)システムコール:もちろん

int fd = open("datafile", O_RDONLY); 
dup2(fd, 0); 
/* reading from stdin now is in fact reading from datafile */ 

は、あなたには、いくつかの実世界のプログラムに誤りがチェックする必要があります。

ワイルドカードの動作を実装するには、readdir(3)ライブラリ関数を参照するとよいでしょう。

+0

その時点でSTDINをlua_Stateにどのように渡すのですか?それは私が理解できないもののラインに沿っている。 – daelious

+0

このコードは、プログラムのSTDINを変更します(他のすべてのユーザーと同様に、Luaが読んでいるもの)をファイル記述子に変更します。通過するものは何もありません。 –

0

スクリプトを修正せずに実行しましたか(つまり、io.stdinなど)? C面で何か面白いことをしていない限り、それは箱の外で動作するはずです。

関連する問題