Я делаю простую программу ANSI C, которая имитирует оболочку Unix.Поэтому я создаю дочерний процесс с помощью fork (), а внутри дочернего процесса я вызываю exec () для запуска данной (пользователем) программы.
Мне нужно перенаправить содержимое файла на стандартный ввод, чтобы его можно было отправить пользователю, называемому программой.
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", ...);
Все идет хорошо, содержимое файла записывается в stdin, но после чтения всего файла, cat все еще ждет ввода (мне нужно сказать cat, что ввод закончился), но я не могу понять, как: - (?
Есть идеи? Спасибо большое !!!