Встраиваемый Lua в C принимать от STDIN - PullRequest
1 голос
/ 06 июля 2011

Я пишу приложение на C, в котором есть встроенный скрипт lua. Скрипт Lua принимает данные от STDIN. Поэтому, когда я запускаю скрипт из оболочки, это выглядит так:

lua myscript.lua < datafile*

Как мне сделать это из кода C?

Спасибо.

Ответы [ 2 ]

1 голос
/ 06 июля 2011

Используйте системный вызов dup2(2) для дескриптора 0 (stdin) и для дескриптора, возвращаемого open(2) для datafile:

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

Конечно, вам нужна некоторая проверка ошибокв реальной программе.

Чтобы реализовать поведение подстановочных знаков, вы можете обратиться к библиотечной функции readdir(3).

0 голосов
/ 06 июля 2011

Вы пытались просто запустить скрипт без изменений (т.е. использовать io.stdin и т. Д.)?Если вы не делаете что-то необычное на стороне C, это должно работать из коробки.

...