Closed6

Rustのnixクレートのforkがunsafeになっていた件

最近システムプログラミングを再びする機会があって、fork-exec のあたりを書く機会があった。そこで、以前書いた記事をそのまま使おうと思ったら、forkunsafe になっていたのが気になった。どうやら 2019 年頃に修正が入ったらしい。

(あとで何があったのかを読んでまとめる)

std::process:Command についている before_exec という関数があるらしいが、fork は実質この関数をエミュレートしているという関係にあるらしい。

そしてこの before_exec という関数が(というか fork が) async-signal-safe な関数以外を呼び出すと UB する可能性がある。

このことによって、fork には unsafe をつけておくべきなのでは?(ある特定の条件をきっちり満たすように使用しないと UB するので)となり、結果 unsafe になったようだ。

このスクラップは2021/06/12にクローズされました
ログインするとコメントできます