CreateProcess奇怪的行为
CreateProcess strange behaviour
本文关键字:CreateProcess 更新时间:2023-10-16
我编写了一个应用程序,它只执行java -jar
。我希望启动器应用程序在执行CreateProcessA
后立即退出。
LPSTR _cmdupdate = const_cast<char *> (cmdupdate.c_str());
STARTUPINFO info = {sizeof (info)};
ZeroMemory(&info,sizeof(info));
info.cb=sizeof(info);
PROCESS_INFORMATION processInfo;
ZeroMemory(&processInfo,sizeof(processInfo));
CreateProcessA(TEXT(java_exe.c_str()), _cmdupdate, NULL, NULL, false, 0, NULL, TEXT("bin"), &info, &processInfo);
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);
exit(0);
如果我通过IDE(Netbeans 7)执行此操作,一切都很好:java在启动器终止时继续运行。如果我通过双击来运行相同的exe:java启动jar,但启动器等待java进程退出。
那么,当通过IDE运行与独立运行时,CreateProcess有什么区别呢?
当您从IDE运行程序时,它可能会以一种特殊的方式处理控制台,并在程序完成时使其消失。或者,它可能会重定向输出并首先隐藏控制台。
解决方案:使用此处定义的一些标志来处理新进程的控制台。尝试CREATE_NEW_CONSOLE
或DETACHED_PROCESS
,或者CREATE_NO_WINDOW
。
相关文章:
- 调用CreateProcess()并获取字符串的返回值
- 如何使用 CreateProcess 调用 tshark 将捕获文件转换为 txt
- 如何在使用CreateProcess创建的进程上安装挂钩
- CreateProcess在退出后占用套接字端口(每个套接字地址只允许使用一次)
- 使用CreateProcess时奇怪的减速
- CreateProcess stdout with CreateNamedPipe Overlapped
- 使用mhook钩住ZwCreateSection()、CreateProcess()和CreateProcessEx()
- CreateProcess() 可以授予管理员权限吗?
- CreateProcess with std::string
- 如何在窗口上设置使用 CreateProcess 创建的新进程的主线程的堆栈大小?
- 当命令行中使用DShow时,CreateProcess失败
- 如何判断从 CreateProcess 启动的进程是否仍在运行
- CMD.EXE与CreateProcess致电后立即关闭
- CreateProcess:某些应用程序运行其他应用程序
- 在 CreateProcess 的路径中使用 SHGetKnownFolderPath 来运行程序
- CreateProcess vs. CreateFile EXE
- Windows的WGET忽略了使用CreateProcess()调用选项
- i686-fell-fcc createProcess错误(没有这样的文件或目录)
- 是“ CreateProcess”真正安全的
- 将参数转换为lpwstr createProcess