1. ホーム
  2. c

[解決済み] FD_CLOEXEC fcntl()フラグは何をするのですか?

2023-04-17 04:11:29

質問

このように。

if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) {
...

とはいえ、私が読んだのは man fcntl を読んでも、それが何をするものなのかがわかりません。

どのように解決するのですか?

これは close-on-exec フラグを設定し、ファイル記述子を自動的に(かつアトミックに)閉じます。 exec -ファミリ関数のいずれかが成功したときに、ファイル記述子を自動的に (かつアトミックに) 閉じます。

これは、ファイルディスクリプタが有効であれば、この操作が失敗するような条件はないので、むしろ無駄なことです。