经测试, 支持 Win32 和 Linux-x86 平台. 对于用 php 的人, 有了这个东西来维护一定数量的进程, 就能制服经常崩溃退出的 php-cgi 啦!!!
Usage: xxfpm path [-n number] [-i ip] [-p port]
Manage FastCGI processes.
-n, --number number of processes to keep
-i, --ip ip address to bind
-p, --port port to bind, default is 8000
-u, --user start processes using specified linux user
-g, --group start processes using specified linux group
-r, --root change root direcotry for the processes
-h, --help output usage information and exit
-v, --version output version information and exit
第一个写得比较标准的终端应用程序, 我是看了 cygwin 的里的一些源代码, 然后学会了如何使用 getopt, 算是写得比较标准的, 但是代码也不短.
使用例子:
xxfpm z:/php5/php-cgi.exe -n 5 -p 8080
有人问, 如何给程序加入参数? 这个不难, 使用双引号即可, 路径要用 "/" 而不用 "\". 例如要指定 php.ini 的路径, 可以用下面例子:
xxfpm "z:/php5/php-cgi.exe -c z:/php5/php.ini" -n 5 -i 127.0.0.1 -p 8080
如何维护进程:
Windows 上使用 CreateProcess 创建进程, 使用 WaitForSingleObject 等待进程结束; Linux 上使用 fork 和 execl 创建进程, 使用 waitpid 等待进程结束. Linux 的版本多了在创建子进程的时候可以设置进程限制, 能够以受限用户方式来运行.
当进程管理器被关闭的时候, 它所创建的所有子进程也必须被关闭. Windows 上使用 JobObject 这个东西来把子进程与管理器的进程产生关 联, 感谢 iceboy 提供的资料! Linux 上通过捕捉关闭信号, 然后给所有子进程发送 SIGTERM 来结束子进程. 详见源代码!!!
来源: http://www.bubuko.com/infodetail-2611771.html