Isredirected
 
Проверяет, перенаправляется ли стандартный ввод(stdin) или стандартный вывод(stdout) в файл или нет

Синтаксис

Declare Function IsRedirected ( ByVal is_input As Long = 0 ) As Long

Использование

#include "fbio.bi"
result = IsRedirected( is_input )

Параметры

is_input
Long , указывающий тип информации для возврата.

Возвращаемое значение

Возвращает ненулевое значение (-1) если stdin и stdout перенаправляется, в противном случае возвращает ноль (0).

Описание

IsRedirected проверяет, перенаправляется ли стандартный ввод или стандартный вывод в файл или нет.

Если is_input равна ненулевому значению (-1), IsRedirected проверяет stdin.
Если is_input равно нулю (0), IsRedirected проверяет stdout.

Пример

'' Пример в windows, только для использования принципа
'' Самодостаточный пример, используя его собственный файл .exe , как фиктивный входной файл для перенаправления стандартного ввода

#include "fbio.bi"

'' Кавычки нужны для совместимости с пробелами в имени пути
Dim As String pathExe = """" & ExePath & """"
Dim As String fileExe = Mid(Command(0), InStrRev(Command(0), "\") + 1)
Dim As String redirection = " < """ & Command(0)
If LCase(Right(Command(0), 4)) = ".exe" Then
  redirection &= """"
Else
  redirection &= ".exe"""
End If

If Command() = "" Then  '' Первый процесс без перенаправления стандартного ввода
  '' Проверка перенаправления стандартного ввода
  Print "First process without stdin redirection: IsRedirected(-1) = "; Isredirected(-1)
  '' Создание асинхронного второго процесса с стандартным вводом, перенаправленным из file.exe
  Shell("start /d " & pathExe & " /b " & fileExe & redirection & " secondprocess")
  '' В ожидании прекращения асинхронного второго процесса
  Sleep
ElseIf Command() = "secondprocess" Then  '' Второй процесс с перенаправлением стандартного ввода
  '' Проверка перенаправления стандартного ввода
  Print "Second process with stdin redirection  : IsRedirected(-1) = "; Isredirected(-1)
End If


Отличия от QB

  • Новое в FreeBASIC.

См. также