FreeBSD Manual Pages
curl_multi_waitfds(3) Library Functions Manual curl_multi_waitfds(3) NAME curl_multi_waitfds - extract file descriptor information from a multi han- dle SYNOPSIS #include <curl/curl.h> #include <stdlib.h> CURLMcode curl_multi_waitfds(CURLM *multi, struct curl_waitfd *ufds, unsigned int size, unsigned int *fd_count); DESCRIPTION This function extracts curl_waitfd structures which are similar to poll(2)'s pollfd structure from a given multi_handle. These structures can be used for polling on multi_handle file descriptors in a fashion similar to curl_multi_poll(3). The curl_multi_perform(3) func- tion should be called as soon as one of them is ready to be read from or written to. libcurl fills provided ufds array up to the size. If a number of descrip- tors used by the multi_handle is greater than the size parameter then libcurl returns CURLM_OUT_OF_MEMORY error. If the fd_count argument is not a null pointer, it points to a variable that on return specifies the number of descriptors used by the multi_handle to be checked for being ready to read or write. The client code can pass size equal to zero to get the number of the de- scriptors and allocate appropriate storage for them to be used in a subse- quent function call. In this case, fd_count receives a number greater than or equal to the number of descriptors. PROTOCOLS This functionality affects all supported protocols EXAMPLE #include <stdlib.h> int main(void) { CURLMcode mresult; struct curl_waitfd *ufds; CURLM *multi = curl_multi_init(); do { /* call curl_multi_perform() */ /* get the count of file descriptors from the transfers */ unsigned int fd_count = 0; mresult = curl_multi_waitfds(multi, NULL, 0, &fd_count); if(mresult != CURLM_OK) { fprintf(stderr, "curl_multi_waitfds() failed, code %d.\n", mresult); break; } if(!fd_count) continue; /* no descriptors yet */ /* allocate storage for our descriptors */ ufds = malloc(fd_count * sizeof(struct curl_waitfd)); /* get wait descriptors from the transfers and put them into array. */ mresult = curl_multi_waitfds(multi, ufds, fd_count, &fd_count); if(mresult != CURLM_OK) { fprintf(stderr, "curl_multi_waitfds() failed, code %d.\n", mresult); free(ufds); break; } /* Do polling on descriptors in ufds */ free(ufds); } while(!mresult); } AVAILABILITY Added in curl 8.8.0 RETURN VALUE This function returns a CURLMcode indicating success or error. CURLM_OK (0) means everything was OK, non-zero means an error occurred, see libcurl-errors(3). SEE ALSO curl_multi_fdset(3), curl_multi_perform(3), curl_multi_poll(3), curl_multi_wait(3) libcurl 2026-06-11 curl_multi_waitfds(3)
NAME | SYNOPSIS | DESCRIPTION | PROTOCOLS | EXAMPLE | AVAILABILITY | RETURN VALUE | SEE ALSO
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=curl_multi_waitfds&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>
