Открывает стандартный ввод внешнего процесса (
stdin) или
потоковый вывод (
stdout) для файловых операций.
Синтаксис
Open Pipe shell_command For Input As [#]filenumber
Open Pipe shell_command For Output As [#]filenumber
Open Pipe shell_command For Binary access_type [#]filenumber
Использование
result = Open Pipe( command, For {Input|Output}, As filenumber )
или,
result = Open Pipe( command, For Binary, access_type, As filenumber )
(или в QB-подобном синтаксисе,)
Open Pipe filename For {Input|Output} As filenumber
(или,)
Open Pipe filename For Binary access_type As filenumber
Параметры
shell_command
Внешний процесс для выполнения в командной оболочке
операционной системы. Относительные пути к файлам являются относительно
текущей директории (см.
CurDir).
При открытии пайпа для процесса, который требует двойных кавычек для пути к
исполняемому файлу, либо к его аргументам, все строки пайпа должны быть
вложенны внутри двойных кавычек.
access_type
Тип доступа чтения или записи, запрашиваемый вызывающим
процессом.
- Access {Read|Write}
(Один из двух потоков stdin или stdout внешнего процесса
может быть открыт)
filenumber
Доступный(свободный) номер файла для привязки к внешнему
потоку процесса stdin или stdout.
Возвращаемое значение
При первом использовании, Open Pipe возвращает ноль (0) в
случае успешного завершения и ненулевой код ошибки в противном случае.
Описание
Open Pipe выполняет другой процесс в командной строке и
открывает один из потоков
stdin или
stdout для чтения или
записи.
file number связан с потоком, который используется в
последующих файловых операциях, таких, как
Input #.
Доступность
filenumber может быть получена с помощью
FreeFile.
Если внешний процесс не существует, возникает
runtime
ошибка.
Input и
Output
режимы файла открывают поток внешнего процесса
stdin и
stdout,
соответственно, для ввода\вывода последовательного текста, полезно для
чтения или записи простого текста. Символы, слова или целые строки могут
быть считаны или записаны с помощью операции в текстовом режиме файлов,
такой как
Line Input # и
Print #.
Binary режим файла открывает
поток внешнего процесса
stdin или
stdout - в зависимости от
указанного
access type(типа доступа) (см. описание
параметра
access_type) - для random-доступа чтение или
запись произвольного размера и интерпретация исходных данных. Простые
значения типов данных такие, как
Byte
и
LongInt, и целые куски блока
памяти могут считываться или записываться в потоке при помощи файловых
операций в двоичном режиме , например при помощи
Get #
и
Put #.
Двунаправленные пайпы не поддерживаются в FB. Они должны быть реализованы с
помощью функций API ОС.
Runtime ошибки:
Open Pipe создает одну из следующих
runtime ошибок:
(1) Illegal function call
- filenumber не свободный. Используйте FreeFile
, чтобы найти свободный filenumber.
Пример
'' Этот пример использует Open Pipe для
выполнения команды оболочки и ее вывода.
#ifdef __FB_UNIX__
Const TEST_COMMAND = "ls *"
#else
Const TEST_COMMAND = "dir *.*"
#endif
Open Pipe TEST_COMMAND For Input As #1
Dim As String ln
Do Until EOF(1)
Line Input #1, ln
Print ln
Loop
Close #1
Различия платформ
- Binary файловый режим не
поддерживается на всех платформах; Open Pipe выдаст
сообщение об ошибке, если не удается открыть поток внешнего процесса stdin
или stdout в двоичном режиме.
Отличия от QB
См. также