windows下解决PHP调用的外部程序超时阻塞问题
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-22
DWORD WINAPI ThreadFunc( LPVOID lpParam ); char gargv[255]; bool end_thread=true; PROCESS_INFORMATION pi; int main(int argc, char *argv[]) { if(argc<2) { printf("Too few parameters"); return 1; } strcpy(gargv,argv[2]); char blank[]=" "; for(int i=3;i<argc;i++) { strcat(gargv,blank); strcat(gargv,argv[i]); } //printf("%s",gargv); DWORD dwThreadId, dwThrdParam = 1; HANDLE hThread; char szMsg[80]; hThread = CreateThread( NULL, // default security attributes 0, // use default stack size ThreadFunc, // thread function &dwThrdParam, // argument to thread function 0, // use default creation flags &dwThreadId); // returns the thread identifier // Check the return value for success. if (hThread == NULL) { wsprintf( szMsg, "CreateThread failed." ); MessageBox( NULL, szMsg, "main", MB_OK ); } else { Sleep(500); if(end_thread) { Sleep(atoi(argv[1])); if(pi.hProcess) { TerminateThread(pi.hThread ,0); TerminateProcess(pi.hProcess , 0); } } CloseHandle( hThread ); } return 0; } DWORD WINAPI ThreadFunc( LPVOID lpParam ) { STARTUPINFO si; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); // Start the child process. if( !CreateProcess( NULL, // No module name (use command line). gargv, // Command line. NULL, // Process handle not inheritable. NULL, // Thread handle not inheritable. TRUE, // Set handle inheritance to FALSE. 購囚頁宸倖歌方?葎TRUE夸序殻聞喘幻陣崙岬完笥。 0, // No creation flags. NULL, // Use parent''s environment block. |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: php上传多个图片并校验的代码下一篇: PHP实现的简单日历代码
关于windows下解决PHP调用的外部程序超时阻塞问题的所有评论