Open Pipe
 
Открывает стандартный ввод внешнего процесса  (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

  • Новое в FreeBASIC

См. также