Duplicate a file descriptor I/O function handler
QNX SDP8.0Getting Started with the QNX OSDeveloperUser
Prototype
int (*dup) ( resmgr_context_t *ctp,
io_dup_t *msg,
RESMGR_OCB_T *ocb )
Classification:
I/ODefault handler:
NULL—handled by base layerHelper functions:
noneClient functions:
dup(), dup2(), fcntl(), fork(), spawn*()Messages:
_IO_DUPData structure:
struct _io_dup {
uint16_t type;
uint16_t combine_len;
struct _msg_info_hdr info;
dupfd_handle_t handle;
};
typedef union {
struct _io_dup i;
} io_dup_t;
Description:
This is the dup() message handler. As with the close duplicate OCB I/O function handler, you won't likely handle this message yourself. Instead, the base-layer library handles it.Returns:
The status via the helper macro _RESMGR_STATUS().Referenced by:
resmgr_io_funcs_t I/O tablePermission checking:
The default functionality and permission checking is handled by the base layer (regardless of
whether you use the default implementation). The base layer verifies one of the following conditions:
- the process requesting a dup() is the same as the process that opened the original file descriptor
- The message has a valid dupfd handle (see dupfd_register())
- the client has the custom ability iofunc/dup (IOFUNC_ABILITY_DUP) (using iofunc_ability_check())
Page updated: