模块要实现的功能是在c++中利用命名管道和php脚本进行交互。先上出错部分的代码HANDLE hStdoutR, hStdoutW, hStdinR, hStdinW;
STARTUPINFO si;
PROCESS_INFORMATION pi;
char env[255] = "REQUEST_METHOD=POST\\OCONTENT_LENGTH=18\\OCONTENT_TYPE="
"application/x-www-form-urlencoded\\OSCRIPT_FILENAME=D:\\test.php";
InitPipe(&hStdoutR, &hStdoutW, &hStdinR, &hStdinW); //这里是初始化命名管道
FillStartUpInfo(&si, &hStdoutW, &hStdinR); //填充启动信息,为CreateProcess做准备if(!CreateProcess(NULL, "d:\\php\\php-cgi.exe D:\\test.php", NULL, NULL, 1,
NORMAL_PRIORITY_CLASS, env, NULL, &si, &pi))
exit(1); //创建进程失败,退出断点调试的时候if判断语句中的条件表达式为真,结果是直接退出了程序,请问为什么会发生这种情况?另外希望能解释一下环境变量env的意思
STARTUPINFO si;
PROCESS_INFORMATION pi;
char env[255] = "REQUEST_METHOD=POST\\OCONTENT_LENGTH=18\\OCONTENT_TYPE="
"application/x-www-form-urlencoded\\OSCRIPT_FILENAME=D:\\test.php";
InitPipe(&hStdoutR, &hStdoutW, &hStdinR, &hStdinW); //这里是初始化命名管道
FillStartUpInfo(&si, &hStdoutW, &hStdinR); //填充启动信息,为CreateProcess做准备if(!CreateProcess(NULL, "d:\\php\\php-cgi.exe D:\\test.php", NULL, NULL, 1,
NORMAL_PRIORITY_CLASS, env, NULL, &si, &pi))
exit(1); //创建进程失败,退出断点调试的时候if判断语句中的条件表达式为真,结果是直接退出了程序,请问为什么会发生这种情况?另外希望能解释一下环境变量env的意思
NORMAL_PRIORITY_CLASS, env, NULL, &si, &pi))的D:\\test.php应该是多余的,环境变量里已经有了执行脚本路径了。
关于你说的第2点,能否在详细说一下env这个环境变量为什么要这样设置
第3点,环境变量中确实有了执行脚本的路径了,但是php-cgi并不知道需要它解释的是哪个脚本,所以test.php并不是多余的
关于你说的第2点,能否在详细说一下env这个环境变量为什么要这样设置
第3点,环境变量中确实有了执行脚本的路径了,但是php-cgi并不知道需要它解释的是哪个脚本,所以test.php并不是多余的第一点,随便调用个cd ls之类的命令试下,是否是执行php-cgi期间出了问题。如果是的话,那就是参数出了问题。
第二点,ENV是用来向PHP-CGI传递其运行所需的变量,比如POST,GET数据,SERVER等等。
第三点,确实是多余的,ENV中已经告诉了PHP-CGI要执行哪个脚本了。你可以手动在CLI下测试下,用EXPORT写入环境变量,然后直接调用PHP-CGI