Tcl_CreateFileHandler(3)
β¨ Tcl_CreateFileHandler β bestie, it's giving event-driven π β¨
okay so this is the Tcl Library Procedures page for Tcl_CreateFileHandler and its partner in crime Tcl_DeleteFileHandler, and yes it is Unix only β like, don't come at me if you're on Windows, this vibe is not for you π«Ά
πΈ NAME πΈ
Tcl_CreateFileHandler, Tcl_DeleteFileHandler β associate procedure callbacks with files or devices (Unix only) π₯
π SYNOPSIS π
#include <tcl.h>
Tcl_CreateFileHandler(fd, mask, proc, clientData)
Tcl_DeleteFileHandler(fd)
π ARGUMENTS π
int fd(in) β a Unix file descriptor for an open file or device. like the little number that points at your file, slay πint mask(in) β the conditions under whichprocshould be called: an OR-ed combination ofTCL_READABLE,TCL_WRITABLE, andTCL_EXCEPTION. you can also set it to0to temporarily disable a handler, no cap β¨Tcl_FileProc *proc(in) β the procedure to invoke whenever the file or device indicated by file meets the conditions specified by mask. it's the main character that gets called π«Άvoid *clientData(in) β arbitrary one-word value to pass toproc. literally whatever you want, one word, that's it π
π DESCRIPTION π
Tcl_CreateFileHandler arranges for proc to be invoked in the future whenever I/O becomes possible on a file, or when an exceptional condition exists for the file. the file is indicated by fd, and the conditions of interest are indicated by mask. for example, if mask is TCL_READABLE, proc will be called when the file is readable. so simple, so iconic β¨
the callback to proc is made by Tcl_DoOneEvent, so Tcl_CreateFileHandler is only useful in programs that dispatch events through Tcl_DoOneEvent or through Tcl commands such as vwait. iykyk β no event loop, no callback, periodt π
proc should have arguments and result that match the type Tcl_FileProc:
typedef void Tcl_FileProc(
void *clientData,
int mask);
the clientData parameter to proc is a copy of the clientData argument given to Tcl_CreateFileHandler when the callback was created. typically, clientData points to a data structure containing application-specific information about the file. mask is an integer mask indicating which of the requested conditions actually exists for the file; it will contain a subset of the bits in the mask argument to Tcl_CreateFileHandler. subset bestie, not the whole thing, keep up π
ok so here's the tea π« β there may exist only one handler for a given file at a given time. ifTcl_CreateFileHandleris called when a handler already exists forfd, then the new callback replaces the information that was previously recorded. not merged, not queued, straight up replaced π
Tcl_DeleteFileHandler may be called to delete the file handler for fd; if no handler exists for the file given by fd then the procedure has no effect. it's a vibe, it's chill, nothing bad happens πΈ
the purpose of file handlers is to enable an application to respond to events while waiting for files to become ready for I/O. for this to work correctly, the application may need to use non-blocking I/O operations on the files for which handlers are declared. otherwise the application may block if it reads or writes too much data; while waiting for the I/O to complete the application will not be able to service other events. use Tcl_SetChannelOption with -blocking to set the channel into blocking or nonblocking mode as required. blocking is the enemy of the vibe, fr fr π
note that these interfaces are only supported by the Unix implementation of the Tcl notifier. that's the whole rule. π
π¦ SEE ALSO π¦
β KEYWORDS β
callback, file, handler
and that's the whole page, bestie π this one lives in the Tcl 8.0 era of the manual β Tcl_CreateFileHandler(3), Tcl Library Procedures, so go forth and handle your files, you absolute icon π π
π¦ where this page comes from
- alpine 3.23: tcl9-doc 9.0.3-r0 Β· TCL
- alpine 3.24: tcl9-doc 9.0.3-r2 Β· TCL
- fedora 43: tcl-doc 1:9.0.2-1.fc43 Β· TCL AND GPL-3.0-or-later WITH Bison-exception-2.2 AND BSD-3-Clause
- fedora 44: tcl-doc 1:9.0.2-1.fc44 Β· TCL AND GPL-3.0-or-later WITH Bison-exception-2.2 AND BSD-3-Clause
- nixos 26.05: tcl 9.0.3
- nixpkgs unstable: tcl 9.1.0
- Copyright (c) 1990-1994 The Regents of the University of California
- Copyright (c) 1994-1997 Sun Microsystems, Inc
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms