FCNTL(2) 1990 FCNTL(2) NNAAMMEE fcntl - file control SSYYNNOOPPSSIISS ##iinncclluuddee <<ffccnnttll..hh>> rreess == ffccnnttll((ffdd,, ccmmdd,, aarrgg)) iinntt rreess;; iinntt ffdd,, ccmmdd,, aarrgg;; DDEESSCCRRIIPPTTIIOONN _F_c_n_t_l provides for control over descriptors. The argument _f_d is a descriptor to be operated on by _c_m_d as follows: F_DUPFD Return a new descriptor as follows: Lowest numbered available descriptor greater than or equal to _a_r_g. Same object references as the original descriptor. New descriptor shares the same file pointer if the object was a file. Same access mode (read, write or read/write). Same file status flags (i.e., both file descriptors share the same file status flags). The close-on-exec flag associated with the new file descriptor is set to remain open across _e_x_e_c_v(2) system calls. F_GETFD Get the close-on-exec flag associated with the file descriptor _f_d. If the low-order bit is 0, the file will remain open across _e_x_e_c, otherwise the file will be closed upon execu- tion of _e_x_e_c. F_SETFD Set the close-on-exec flag associated with _f_d to the low order bit of _a_r_g (0 or 1 as above). F_GETFL Get descriptor status flags, as described below. F_SETFL Set descriptor status flags. F_GETOWN Get the process ID or process group currently receiving SIGIO and SIGURG signals; process Printed 7/27/90 June 1 FCNTL(2) 1990 FCNTL(2) groups are returned as negative values. F_SETOWN Set the process or process group to receive SIGIO and SIGURG signals; process groups are specified by supplying _a_r_g as negative, oth- erwise _a_r_g is interpreted as a process ID. The flags for the F_GETFL and F_SETFL flags are as follows: FNDELAY Non-blocking I/O; if no data is available to a _r_e_a_d call, or if a write operation would block, the call returns -1 with the error EWOULDBLOCK. FAPPEND Force each write to append at the end of file; corresponds to the O_APPEND flag of _o_p_e_n(2). FASYNC Enable the SIGIO signal to be sent to the process group when I/O is possible, e.g., upon availability of data to be read. RREETTUURRNN VVAALLUUEE Upon successful completion, the value returned depends on _c_m_d as follows: F_DUPFD A new file descriptor. F_GETFD Value of flag (only the low-order bit is defined). F_GETFL Value of flags. F_GETOWN Value of file descriptor owner. other Value other than -1. Otherwise, a value of -1 is returned and _e_r_r_n_o is set to indicate the error. EERRRROORRSS _F_c_n_t_l will fail if one or more of the following are true: [EBADF] _F_i_l_d_e_s is not a valid open file descriptor. [EMFILE] _C_m_d is F_DUPFD and the maximum allowed number of file descriptors are currently open. [EINVAL] _C_m_d is F_DUPFD and _a_r_g is negative or greater than the maximum allowable number (see _g_e_t_d_t_a_b_l_e_s_i_z_e(2)). [ESRCH] _C_m_d is F_SETOWN and the process ID given as argument is not in use. SSEEEE AALLSSOO close(2), execve(2), getdtablesize(2), open(2), sigvec(2) Printed 7/27/90 June 2 FCNTL(2) 1990 FCNTL(2) BBUUGGSS The asynchronous I/O facilities of FNDELAY and FASYNC are currently available only for tty and socket operations. Printed 7/27/90 June 3