out
Intéressons-nous à la fonction waitpid:
lib C
fun waitpid(pid : Int32, status_ptr : Int32*, options : Int32) : Int32
end
D'après la documentation de la fonction:
Les informations de statut du processus fils sont stockées dans l'objet vers lequel status_ptr pointe, à moins que status_ptr soit un pointeur nul.
Nous pouvons utiliser cette fonction ainsi:
pid = ...
options = ...
status_ptr = uninitialized Int32
C.waitpid(pid, pointerof(status_ptr), options)
De cette manière on passe un pointeur status_ptr
à la fonction pour qu'elle remplisse sa valeur.
Il y a une manière plus simple d'écrire ce qui précéde en utilisant un paramètre out
:
pid = ...
options = ...
C.waitpid(pid, out status_ptr, options)
Le compilateur va automatiquement déclarer une variable status_ptr
de type Int32
, parce-que l'argument est un Int32*
.
Cela fonctionnera pour tout type, tant que l'argument est un pointeur de ce type (et, bien sûr, tant que la fonction remplit la valeur vers laquelle pointe le pointeur).