---
name: "GetOpnFl"
section: "3tcl"
platform: "linux"
package: "tcl8.3-doc"
version: "8.3.5-13"
release: "Debian 5.0 (Lenny)"
platforms: ["linux"]
url: "https://new.carta.tech/GetOpnFl/3tcl"
---

# GetOpnFl(3tcl)

Get a standard IO File \* handle from a channel. (Unix only)

```

```

## NAME

Tcl\_GetOpenFile - Get a standard IO File \* handle from a channel. (Unix only)

## SYNOPSIS

```
#include <tcl.h>

int
Tcl_GetOpenFile(interp, string, write, checkUsage, filePtr)

```

## ARGUMENTS

- Tcl\_Interp *\*interp* (in)

  Tcl interpreter from which file handle is to be obtained.

- char *\*string* (in)

  String identifying channel, such as **stdin** or **file4**.

- int *write* (in)

  Non-zero means the file will be used for writing, zero means it will be used for reading.

- int *checkUsage* (in)

  If non-zero, then an error will be generated if the file wasn't opened for the access indicated by *write*.

- ClientData *\*filePtr* (out)

  Points to word in which to store pointer to FILE structure for the file given by *string*.

  ```

  ```

## DESCRIPTION

**Tcl\_GetOpenFile** takes as argument a file identifier of the form returned by the **open** command and returns at *\*filePtr* a pointer to the FILE structure for the file. The *write* argument indicates whether the FILE pointer will be used for reading or writing. In some cases, such as a channel that connects to a pipeline of subprocesses, different FILE pointers will be returned for reading and writing. **Tcl\_GetOpenFile** normally returns TCL\_OK. If an error occurs in **Tcl\_GetOpenFile** (e.g. *string* didn't make any sense or *checkUsage* was set and the file wasn't opened for the access specified by *write*) then TCL\_ERROR is returned and the interpreter's result will contain an error message. In the current implementation *checkUsage* is ignored and consistency checks are always performed.

Note that this interface is only supported on the Unix platform.

## KEYWORDS

channel, file handle, permissions, pipeline, read, write
