mod_fcgid
mod_fcgid is a high performance alternative to mod_cgi or mod_cgid, which starts a sufficient number instances of the CGI program to handle concurrent requests, and these programs remain running to handle further incoming requests.
   1 wget http://mirrors.up.pt/pub/apache//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.bz2
   2 tar xvif mod_fcgid-2.3.9.tar.bz2 
   3 cd mod_fcgid-2.3.9
   4 ./configure.apxs 
   5 make
   6 make install
   7 /usr/lib/httpd/modules/mod_fcgid.so
   8 # /etc/httpd/httpd.conf
   9 # LoadModule fcgid_module lib/httpd/modules/mod_fcgid.so
  10 
fcgi library
https://opensource.apple.com/source/FastCGI/FastCGI-4/fcgi/doc/fastcgi-whitepaper/fastcgi.htm
https://opensource.apple.com/source/FastCGI/FastCGI-4/fcgi/doc/fcgi-spec.html#S2
The key piece of initial state in a FastCGI process is a listening socket, through which it accepts connections from a Web server. A FastCGI application calls accept() on the socket referred to by file descriptor FCGI_LISTENSOCK_FILENO to accept a new transport connection.
- man 2 getpeername
 
GETPEERNAME(2)             Linux Programmer's Manual            GETPEERNAME(2)
NAME
       getpeername - get name of connected peer socket
SYNOPSIS
       #include <sys/socket.h>
       int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
fcgi_app.c
   1 /*compile:  cc fcgi_app.c -o fcgi_app -lfcgi */
   2 /* /usr/lib/libfcgi.so */
   3 /* cp /tmp/fcgi_app /var/www/htdocs/localhostfcgi/app.fcgi */
   4 
   5 #include <fcgi_stdio.h>
   6 void main(void)
   7 {
   8     int count = 0;
   9     while(FCGI_Accept() >= 0) {
  10         printf("Content-type: text/html\r\n");
  11         printf("\r\n");
  12         printf("Hello world!<br>\r\n");
  13         printf("Request number %d.", count++);
  14     }
  15     exit(0);
  16 }
/etc/httpd/vhosts.conf
/etc/httpd/httpd.conf
LoadModule fcgid_module lib/httpd/modules/mod_fcgid.so SetHandler fcgid-script Options +ExecCGI
   1 lsof | grep -i fcgi
   2 #app.fcgi  9803          apache    0u     unix 0xe1dff440      0t0      59138 /var/run/fcgidsock/4840.1 type=STREAM
   3 
   4 netstat -a -n | grep fcgi
   5 #Active UNIX domain sockets (servers and established)
   6 #Proto RefCnt Flags       Type       State         I-Node   Path
   7 #unix  2      [ ACC ]     STREAM     LISTENING     59138    /var/run/fcgidsock/4840.1
   8 
   9 lsof | grep -i fcgidsock
  10 #app.fcgi   9803           apache    0u     unix 0xe1dff440      0t0      59138 /var/run/fcgidsock/4840.1 type=STREAM
  11 #x.fcgi    10044           apache    0u     unix 0xe1dff700      0t0     108605 /var/run/fcgidsock/4840.7 type=STREAM
  12