out¶
waitpid 関数について考えてみてください。
lib C
fun waitpid(pid : Int32, status_ptr : Int32*, options : Int32) : Int32
end
この関数のドキュメントは以下の内容です。
status_ptr が指すオブジェクトに保持されている子プロセスからのステータス情報
この関数を以下のように利用できます。
status_ptr = uninitialized Int32
C.waitpid(pid, pointerof(status_ptr), options)
このとき、status_ptr
のポインタを関数に渡し、値を設定してもらっています。
上記は out
パラメータを使うことでよりシンプルに書くことができます。
C.waitpid(pid, out status_ptr, options)
このとき、引数の型が Int32*
であるため、Int32
型の変数 status_ptr
を自動的に宣言します。
これは、fun
の引数がその型のポインタである場合には、どのような型に対しても有効です (もちろん、ポインタが差す値が関数によって設定されることが前提です)。