---
name: "Tcl_GetOpenFile"
section: "3"
platform: "linux"
package: "tcl"
version: "8.6.16-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Tcl_GetOpenFile"
---

# Tcl\_GetOpenFile(3)

Return a FILE\* for a channel registered in the given interpreter (Unix only)

```

```

## NAME

Tcl\_GetOpenFile - Return a FILE\* for a channel registered in the given interpreter (Unix only)

## SYNOPSIS

```
#include <tcl.h>

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

```

## ARGUMENTS

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

  Tcl interpreter from which file handle is to be obtained.

- const char *\*chanID* (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 was not 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 *chanID*.

  ```

  ```

## 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. *chanID* did not make any sense or *checkUsage* was set and the file was not 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
