KHTTP_FCGI_GETFD(3)

πŸ“¦ version 1.0.1, in alpine 3.24

πŸ’– KHTTP_FCGI_GETFD(3) πŸ’–

okay bestie, this one is from the Library Functions Manual and it's giving β€œtiny getter function with big async energy” ✨

🌸 NAME 🌸

khttp_fcgi_getfd β€” get the FastCGI control socket 🫢

πŸŽ€ LIBRARY πŸŽ€

library β€œlibkcgi” β€” yes, that libkcgi πŸ’…

✨ SYNOPSIS ✨

#include <sys/types.h>
#include <stdarg.h>
#include <stdint.h>
#include <kcgi.h>

int
khttp_fcgi_getfd(const struct kfcgi *fcgi);

πŸ¦‹ DESCRIPTION πŸ¦‹

okay so khttp_fcgi_getfd() gets the control socket used for handling FastCGI processes πŸ’–. Use it for polling purposes only in asynchronous applications β€” that's its whole lane. If you manipulate the returned socket descriptor in any other way, the results are undefined 😭, so like... don't.

The returned descriptor is only valid after khttp_fcgi_init(3) and prior to khttp_fcgi_free(3) ⭐. That window, bestie, that's the window.

🌈 EXAMPLES 🌈

The example below starts an application in FastCGI or regular CGI mode depending upon the environment 🧚:

int
main(void)
{
  struct pollfd  pfd;
  struct kreq    req;
  struct kfcgi  *fcgi;
  enum kcgi_err  er;
  int rc;

  er = khttp_fcgi_init(&fcgi, NULL, 0, NULL, 0, 0);
  if (er != KCGI_OK)
    errx(1, "khttp_fcgi_init: %s", kcgi_strerror(er));

  pfd.events = POLLIN;
  pfd.fd = khttp_fcgi_getfd(fcgi);

  /* Poll on other sockets here... */
  while ((rc = poll(&pfd, 1, INFTIM)) != -1) {
    er = khttp_fcgi_parse(fcgi, &req);
    if (er != KCGI_OK)
      err(1, "khttp_fcgi_parse: %s", kcgi_strerror(er));
    if (KCGI_EXIT == er) {
      khttp_free(&req);
      break;
    }
    /* Do something. */
    khttp_free(&req);
  }
  khttp_fcgi_free(fcgi);
  if (rc == -1)
    err(1, "poll");
  return 0;
}

πŸ’œ SEE ALSO πŸ’œ

kcgi(3) β€” go read it, bestie πŸ“š

πŸ‘‘ AUTHORS πŸ‘‘

Written by Kristaps Dzonsons <kristaps@bsd.lv>. β€” iconic ✨


xoxo, from Debian, dated $Mdocdate$, on the KHTTP_FCGI_GETFD(3) page πŸ’œπŸ«Ά

πŸ“¦ where this page comes from