FastCGI Developers Kitを使用して私の最初のC/C++ fastCGIアプリケーションを開発しています。C/C++のCGI/FastCGIアプリケーション(ソケットプログラミングの質問)
私は正常に(スニペットは、以下に示す)のサンプルプログラムのいずれかを構築しました:
int main (void)
{
int count = 0;
long pid = getpid();
streambuf * cin_streambuf = cin.rdbuf();
streambuf * cout_streambuf = cout.rdbuf();
streambuf * cerr_streambuf = cerr.rdbuf();
FCGX_Request request;
FCGX_Init();
FCGX_InitRequest(&request, 0, 0);
while (FCGX_Accept_r(&request) == 0)
{
/* Handle request */
}
return 0;
}
をしかし、私は上記の例を実行すると、それは単に終了します。デバッグ時に、FCGX_Accept_rがエラーコードを返していることに気付きました。さらに調査すると、accept()メソッド呼び出しが失敗していることに気付きました。
失敗した実際の行は次のとおりです。
socket = accept(listen_sock, (struct sockaddr *)&sa, &len);
関数に渡される引数は次のとおりです。
listen_sock: 0
len: 112
sa:
{un = {sun_family = 0, sun_path = "\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\020\\"'\\000\\000\\032\\356m\\000\\000\\000\\000\\377\\377\\377\\377\\364\\277\\022\\000\\310\\366\\377\\277\\001\\000\\000\\000\\000\\000\\000\\000X\\366\\377\\277\\343\\276\\004\\b\\377\\377\\377\\377\\001\\000\\000\\000\\001\\000\\000\\000\\000\\000\\000\\000\\001\\000\\000\\000\\310\\366\\377\\277\\210\\366\\377\\277F\\277\\004\\b\\310\\366\\377\\277\\001\\000\\000\\000\\000"}, in = {sin_family = 0, sin_port = 0, sin_addr = {s_addr = 0}, sin_zero = "\\000\\000\\000\\000\\000\\000\\000"}}
私はプログラミングソケットに新しいですので、私はすることができることで、いくつかの援助を必要としていますaccept()が失敗する原因を診断します。
上記の情報が与えられた場合、accept()の呼び出しが失敗する理由は誰にでも分かりますか?私はUbuntuの10.xの
私の答えはhttp://stackoverflow.com/questions/9223007/spawn-fastcgi-apps-on-windows/11900263#11900263 –