aio_read(3c) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

aio_read(3c)

Standard C Library Functions                                      aio_read(3C)



NAME
       aio_read - asynchronous read from a file

SYNOPSIS
       #include <aio.h>

       int aio_read(struct aiocb *aiocbp);

DESCRIPTION
       The   aio_read()   function   allows   the   calling  process  to  read
       aiocbp->aio_nbytes from the  file  associated  with  aiocbp->aio_fildes
       into  the  buffer  pointed  to  by  aiocbp->aio_buf.  The function call
       returns when the read request has been initiated or queued to the  file
       or  device  (even  when  the  data cannot be delivered immediately). If
       _POSIX_PRIORITIZED_IO is defined and prioritized I/O is  supported  for
       this  file,  then the asynchronous operation is submitted at a priority
       equal   to   the   scheduling   priority   of   the    process    minus
       aiocbp->aio_reqprio.  The  aiocbp  value  may be used as an argument to
       aio_error(3C) and aio_return(3C) in order to determine the error status
       and return status, respectively, of the asynchronous operation while it
       is proceeding. If an error condition is encountered during queuing, the
       function  call  returns without having initiated or queued the request.
       The requested operation takes place at the  absolute  position  in  the
       file  as  given  by  aio_offset, as if lseek(2) were called immediately
       prior to the operation with an offset equal to aio_offset and a  whence
       equal  to  SEEK_SET. After a successful call to enqueue an asynchronous
       I/O operation, the value of the file offset for the  file  is  unspeci‐
       fied.


       The  aiocbp->aio_sigevent structure defines what asynchronous notifica‐
       tion is to occur when the asynchronous operation completes,  as  speci‐
       fied in signal.h(3HEAD).


       If  SIGEV_MEM  sigevent  type is specified, the error and return values
       are updated in the aiocb_t structure when I/O  is  completed.  Applica‐
       tions  can get the error value using aio_error(3C) and the return value
       using   aio_return(3C).   For   SIGEV_MEM   sigevent   type   requests,
       aio_error(3C)  and  aio_return(3C)  simply  return the error and return
       values from the structure, no system calls are involved. While the  I/O
       is  in progress an EINPROGRESS error is returned. I/O completion can be
       detected by monitoring the error value returned by aio_error(3C).


       I/O completion notifications of SIGEV_MEM sigevent type requests cannot
       be collected using aio_waitn(3C) or aio_suspend(3C) calls.


       The aiocbp->aio_lio_opcode field is ignored by aio_read().


       The aiocbp argument points to an aiocb structure. If the buffer pointed
       to by aiocbp->aio_buf or the control block pointed to by aiocbp becomes
       an  illegal  address  prior  to  asynchronous  I/O completion, then the
       behavior is undefined.


       Simultaneous asynchronous operations  using  the  same  aiocbp  produce
       undefined results.


       If _POSIX_SYNCHRONIZED_IO is defined and synchronized I/O is enabled on
       the file associated with aiocbp->aio_fildes, the behavior of this func‐
       tion is according to the definitions of synchronized I/O data integrity
       completion and synchronized I/O file integrity completion.


       For any system action that changes the process memory  space  while  an
       asynchronous I/O is outstanding to the address range being changed, the
       result of that action is undefined.


       For regular files, no data transfer will occur past the offset  maximum
       established    in   the   open   file   description   associated   with
       aiocbp->aio_fildes.

RETURN VALUES
       The aio_read() function returns 0 to the calling  process  if  the  I/O
       operation  is  successfully  queued; otherwise, the function returns −1
       and sets errno to indicate the error.

ERRORS
       The aio_read() function will fail if:

       EAGAIN    The requested asynchronous I/O operation was not  queued  due
                 to system resource limitations.



       Each  of  the following conditions may be detected synchronously at the
       time of the call to aio_read(), or asynchronously. If any of the condi‐
       tions below are detected synchronously, the aio_read() function returns
       -1 and sets errno to the corresponding value. If any of the  conditions
       below  are  detected asynchronously, the return status of the asynchro‐
       nous operation is set to −1, and the error status of  the  asynchronous
       operation will be set to the corresponding value.

       EBADF     The  aiocbp->aio_fildes argument is not a valid file descrip‐
                 tor open for reading.


       EINVAL    The file offset value implied by aiocbp->aio_offset would  be
                 invalid,   aiocbp->aio_reqprio  is  not  a  valid  value,  or
                 aiocbp->aio_nbytes is an invalid value.



       In the case that the aio_read() successfully queues the  I/O  operation
       but  the operation is subsequently canceled or encounters an error, the
       return status of the asynchronous operation is one of the  values  nor‐
       mally  returned  by  the  read(2) function call. In addition, the error
       status of the asynchronous operation will be set to one  of  the  error
       statuses  normally  set by the read() function call, or one of the fol‐
       lowing values:

       EBADF        The  aiocbp->aio_fildes  argument  is  not  a  valid  file
                    descriptor open for reading.


       ECANCELED    The  requested  I/O  was canceled before the I/O completed
                    due to an explicit aio_cancel(3C) request.


       EINVAL       The file offset value implied by aiocbp->aio_offset  would
                    be invalid.



       The   following  condition  may  be  detected  synchronously  or  asyn‐
       chronously:

       EOVERFLOW    The file is a regular file, aiocbp->aio_nbytes is  greater
                    than  0  and  the starting offset in aiocbp->aio_offset is
                    before the end-of-file and is at or beyond the offset max‐
                    imum   in   the  open  file  description  associated  with
                    aiocbp->aio_fildes.


USAGE
       For portability, the application should set aiocbp->aio_reqprio to 0.


       The aio_read() function has a transitional interface  for  64-bit  file
       offsets. See lf64(7).

ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ Interface StabilityCommitted _ MT-LevelMT-Safe _  Stan‐
       dardSee standards(7).


SEE ALSO
       close(2),  exec(2),  exit(2),  fork(2),  lseek(2),  read(2),  write(2),
       aio_cancel(3C),  aio_return(3C),  lio_listio(3C),  aio.h(3HEAD),   sig‐
       info.h(3HEAD), signal.h(3HEAD), attributes(7), lf64(7), standards(7)



Oracle Solaris 11.4               17 Aug 2018                     aio_read(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3