Overview
概要
You use file handle objects to access data associated with files, sockets, pipes, and devices. For files, you can read, write, and seek within the file. For sockets, pipes, and devices, you can use a file handle object to monitor the device and process data asynchronously.
あなたは、ファイルハンドルオブジェクトを使って、ファイル、ソケット、パイプ、そしてデバイスと結びつけられたデータにアクセスします。ファイルに対して、あなたは読み、書き、そしてファイル内部のシークが可能です。ソケット、パイプ、そしてデバイスに対して、あなたはファイルハンドルオブジェクトを使ってデバイスの監視およびデータ処理が非同期に可能です。
Most creation methods for FileHandle
cause the file handle object to take ownership of the associated file descriptor.
FileHandle
に対する大部分の作成メソッドは、ファイルハンドルオブジェクトにその結びつけられたファイル記述子の所有権を取らせます。
This means that the file handle object both creates the file descriptor and is responsible for closing it later, usually when the system deallocates the file handle object. If you want to use a file handle object with a file descriptor that you created, use the init(fileDescriptor:)
method or use the init(fileDescriptor:closeOnDealloc:)
method and pass false
for the flag
parameter.
あるファイルハンドルオブジェクトをあなたが作成したファイル記述子とともに使うことを望むならば、init(fileDescriptor:)
メソッドを使ってください、またはinit(fileDescriptor:closeOnDealloc:)
メソッドを使ってfalse
をflag
パラメータを渡してください。
Run Loop Considerations
実行ループ考察
When using a file handle object to communicate asynchronously with a socket, you must initiate the corresponding operations from a thread with an active run loop. Although the read, accept, and wait operations themselves are performed asynchronously on background threads, the file handle uses a run loop source to monitor the operations and notify your code appropriately.
ファイルハンドルオブジェクトを使って非同期にソケットと通信する場合、あなたは該当する演算を、アクティブ実行ループを持つスレッドから開始しなければなりません。読み込み、受け取り、そして待ち受けの演算処理それら自体はバックグラウンドスレッド上で非同期に実行されるけれども、ファイルハンドルは実行ループソースを使うことで演算処理を監視して適切にあなたのコードに通知します。
Therefore, you must call those methods from your application’s main thread or from any thread where you’ve configured a run loop and are using it to process events.