Skip to content
Syscall BSD#41

svc · unix #41

dup

Duplique un descripteur de fichier sur le plus petit numéro de fd libre du processus appelant.

Prototype

int dup(u_int fd);

Retour: int

Arguments

NameTypeDirDescription
fdu_int-

Historique des versions

XNU tagmacOS#
xnu-1456.1.26macOS 10.6 Snow Leopard41
xnu-1699.24.8macOS 10.7 Lion41
xnu-2050.18.24macOS 10.8 Mountain Lion41
xnu-2422.115.4macOS 10.9 Mavericks41
xnu-2782.40.9macOS 10.10 Yosemite41
xnu-3247.1.106macOS 10.11 El Capitan41
xnu-3789.1.32macOS 10.12 Sierra41
xnu-4570.1.46macOS 10.13 High Sierra41
xnu-4903.221.2macOS 10.14 Mojave41
xnu-6153.11.26macOS 10.15 Catalina41
xnu-1486.2.11—41
xnu-1504.15.3—41
xnu-1504.3.12—41
xnu-1504.7.4—41
xnu-1504.9.17—41
xnu-1504.9.26—41
xnu-1504.9.37—41
xnu-1699.22.73—41
xnu-1699.22.81—41
xnu-1699.24.23—41
xnu-1699.26.8—41
xnu-1699.32.7—41
xnu-2050.22.13—41
xnu-2050.24.15—41
xnu-2050.48.11—41
xnu-2050.7.9—41
xnu-2050.9.2—41
xnu-2422.1.72—41
xnu-2422.100.13—41
xnu-2422.110.17—41
xnu-2422.90.20—41
xnu-2782.1.97—41
xnu-2782.10.72—41
xnu-2782.20.48—41
xnu-2782.30.5—41
xnu-3247.10.11—41
xnu-3248.20.55—41
xnu-3248.30.4—41
xnu-3248.40.184—41
xnu-3248.50.21—41
xnu-3248.60.10—41
xnu-3789.21.4—41
xnu-3789.31.2—41
xnu-3789.41.3—41
xnu-3789.51.2—41
xnu-3789.60.24—41
xnu-3789.70.16—41
xnu-4570.20.62—41
xnu-4570.31.3—41
xnu-4570.41.2—41
xnu-4570.51.1—41
xnu-4570.61.1—41
xnu-4570.71.2—41
xnu-4903.231.4—41
xnu-4903.241.1—41
xnu-4903.270.47—41
xnu-6153.101.6—41
xnu-6153.121.1—41
xnu-6153.141.1—41
xnu-6153.41.3—41
xnu-6153.61.1—41
xnu-6153.81.5—41

Exemples

C — duplicate stdin

int newfd = dup(STDIN_FILENO);

Notes

Le nouveau fd partage le même fileglob, le même offset et les mêmes drapeaux d'état que l'original, mais son bit FD_CLOEXEC est remis à zéro. dup est préservé à travers exec sauf si FD_CLOEXEC est ensuite positionné via fcntl(F_SETFD). L'appel renvoie EMFILE si RLIMIT_NOFILE serait dépassé.

Détection

Pas d'évènement ES dédié; observable via syscall::dup:entry en DTrace. La croissance de la table des fichiers s'infère via sysctl kern.num_files.

API associées

dup2closefcntlopenpipe