## Tcl8.6.17/Tk8.6.17 Documentation > Tcl C API > CrtFileHdlr

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    Tcl_CreateFileHandler, Tcl_DeleteFileHandler — ファイルや装置に呼戻し手続函数を関連付ける(Unixのみ)　 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)
    int mask (入力in)
    Tcl_FileProc *proc (入力in)
    ClientData clientData (入力in)
  説明 DESCRIPTION
  SEE ALSO
  KEYWORDS

### NAME

Tcl_CreateFileHandler, Tcl_DeleteFileHandler — ファイルや装置に呼戻し手続函数を関連付ける(Unixのみ)　 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)
  開いたファイルや装置へのUnix ファイル記述子｡ 　 Unix file descriptor for an open file or device.

int mask (入力in)
  proc が呼ばれる条件: TCL_READABLE と TCL_WRITABLE と TCL_EXCEPTION の､論理和の組合せ｡臨時的に処理機能を不能にする 0 に設定し得る｡ Conditions under which proc should be called: OR-ed combination of TCL_READABLE, TCL_WRITABLE, and TCL_EXCEPTION. May be set to 0 to temporarily disable a handler.

Tcl_FileProc *proc (入力in)
  何時であれ file によって指し示されるファイルか装置が mask により指定される条件に合致する時に起動される手続函数｡ Procedure to invoke whenever the file or device indicated by file meets the conditions specified by mask.

ClientData clientData (入力in)
  proc に渡す任意の１語｡ Arbitrary one-word value to pass to proc.

### 説明 DESCRIPTION

proc の為の Tcl_CreateFileHandler は将来､何時であれファイル上に入出力が可能になる時､或はファイルの為に例外条件が存在する時､ proc の為に起動されることを手配する｡そのファイルは fd によって識別され､配分された条件は mask によって指し示される｡譬えば､もし mask が TCL_READABLE ならば､ファイルが読出し可能の時に proc が呼出される｡ proc への呼戻しは Tcl_DoOneEvent によってなされ､ Tcl_CreateFileHandler が便利なのは､ Tcl_DoOneEvent 経由か vwait の様な Tcl 命令経由の至急行事の算譜内のみである｡ Tcl_CreateFileHandler arranges for proc to be invoked in the future whenever I/O becomes possible on a file or 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. 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.

proc は Tcl_FileProc:型と合致する引数と結果を有するべきである: Proc should have arguments and result that match the type Tcl_FileProc:

    typedef void Tcl_FileProc(
            ClientData clientData,
            int mask);

proc への clientData 假引数は呼び戻しが作成された時に Tcl_CreateFileHandler に渡された clientData 引数の複写である｡典型的には､ clientData はファイルに関する応用譜固有の情報を含むデータ構造を指す｡mask は実在するファイルに要求された条件を指し示す整数である; それは､ Tcl_CreateFileHandler に対する 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.

与えられたファイルに対し､与えられた時には､唯だ一つだけの処理機能が実在するかもしれない｡もし既に fd に対する処理機能が実在する時に Tcl_CreateFileHandler が呼ばれた場合､新しい呼び戻しは前に記録された情報を置換える｡ 　　　 There may exist only one handler for a given file at a given time. If Tcl_CreateFileHandler is called when a handler already exists for fd, then the new callback replaces the information that was previously recorded.

Tcl_DeleteFileHandler は fd の処理機能を削除する為に呼ばれる､もし fd によって与えられた処理機能が実在しない場合､この手続函数は効果を有さない｡ 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.

ファイル処理機能の目的はファイルが入出力に対して準備ができるのを待つ間に､応用譜が行事に反応することを可能にさせることである｡之が正しく動く為に､その応用譜は処理機能が宣言したファイル上に非同期入出力操作を使う必要があるかもしれない｡そうでない場合､その応用譜は､多すぎるデータを読み書きすると､閉塞し､入出力の為に待っている間､応用譜を完成することは他の行事に従事する事を不能にする｡要求通りに通信路を同期又は非同期様式に設定するには -blocking を伴って Tcl_SetChannelOption を使われたい｡ 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.

註意すべきはこれ等の対話作用は Tcl 通知機能の Unix 実装にのみ運営されている｡ Note that these interfaces are only supported by the Unix implementation of the Tcl notifier.

### SEE ALSO

fileevent, Tcl_CreateTimerHandler, Tcl_DoWhenIdle

### KEYWORDS

callback, file, handler
Copyright © 1990-1994 The Regents of the University of California.
Copyright © 1994-1997 Sun Microsystems, Inc.