Что делает флаг FD CLOEXEC fcntl ()?
вот так:
if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) {
...
хотя я читал man fcntl
, Я не могу понять, что он делает.
2 ответа:
задает close-on-exec флаг для файлового дескриптора, который заставляет файловый дескриптор автоматически (и атомарно) закрываться, когда любой из
exec
-семейные функции успеха.Он также проверяет возвращаемое значение, чтобы увидеть, если операция не удалась, что довольно бесполезно, если дескриптор файла является допустимым, так как нет условия, при котором эта операция должна завершиться с ошибкой на допустимом дескрипторе файла.