PDA

Показать полную графическую версию : Реализация конвейера на Си! NEED HELP!


st031
17-12-2008, 21:43
Подскажите, пожалуйства алгоритм реализации конвейера с произвольным числом команд на Си (разумеется).
Например: как написать вот такой конвейер: ls | cat | cat | ... | cat ? Спасибо!

ruslandh
20-12-2008, 20:21
Конвейер уже существует, что вы хотите реализовывать ?

Yevgenijz
24-01-2009, 10:57
На C программа ls пишет printf("",...); или puts() в стандартный выходной поток stdout (его имя не упоминается, потомучто он по умолчанию) , затем операционная система(неважно какая: Win, Lin или UNIX(первоначально C разрабатывался для UNIX)) записывает эти данные во временный файл и подсовывает этот файл следующей программе конвейера в качестве входного потока "по умолчанию" stdin, далее программа cat берет из этого файла информацию операторами scanf(); gets(); getchar(); и т.п. и пишет данные в следующий выходной поток, ОС стирает предыдущий временный файл, а следующий cat уже из текущего временного файла считывает информацию и т.д.
Причем программа на Си "не знает" из какого файла берет информацию и в какой файл пишет, этим занимается ОС.
В своё время это считалось очень крутым достоинством UNIX.




© OSzone.net 2001-2012