IsRedirected

Checks whether stdin or stdout is redirected to a file

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

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

Parameters
   is_input
      A Long indicating the type of information to return.

Return Value
   Returns non-zero (-1) if stdin or stdout is redirected, otherwise 
   returns zero (0).

Description
   IsRedirected checks whether stdin or stdout is redirected to a file, 
   instead of being connected to the console/terminal as usual.

   If is_input is equal to non-zero (-1), IsRedirected checks stdin.
   If is_input is equal to zero (0), IsRedirected checks stdout.

Example
   '' A Windows based example, just for the use principle
   '' Self-sufficient example, using his own .exe file as dummy input file for stdin redirection

   #include "fbio.bi"

   '' Quotation marks wrapping for compatibility with spaces in path name
   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  '' First process without stdin redirection
     '' Check stdin redirection
     Print "First process without stdin redirection: IsRedirected(-1) = "; IsRedirected(-1)
     '' Creation of asynchronous second process with stdin redirected from file.exe
     Shell("start /d " & pathExe & " /b " & fileExe & redirection & " secondprocess")
     '' Waiting for termination of asynchronous second process
     Sleep
   ElseIf Command() = "secondprocess" Then  '' Second process with stdin redirection
     '' Check stdin redirection
     Print "Second process with stdin redirection  : IsRedirected(-1) = "; IsRedirected(-1)
   End If

Differences from QB
   * New to FreeBASIC.

See also
   * Reset(Streamno)

