cir*_*rus 4 c c++ ide qt qt-creator
一旦我运行我的代码(请注意我只使用C,没有QT和没有C++),我从IDE中的应用程序输出中获得以下消息:
无法获得劣质的句柄:参数不正确.
当我删除makefile和debug/release文件夹时它正在运行,但过了一段时间后我仍然收到错误.这不是一个问题,代码运行,一切都很好,但这个错误弹出,这是非常烦人的.
.pro文件的内容是:
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
QMAKE_CC = gcc -std=c99
SOURCES += main.c
Run Code Online (Sandbox Code Playgroud)
提前致谢!
编辑:我添加了C++标记,因为在我的情况下,C++控制台应用程序也会发生此错误.
我遇到了同样的问题.论坛上的提示和建议是相当无能的,所以我自己调查了问题,我发现它是QtCreator中的一个错误.
有一个叫做脏的小程序qtcreator_process_stub
.每当您在IDE中运行程序时,IDE首先运行qtcreator_process_stub
并将您的程序名称作为参数传递(在其他一些参数中).qtcreator_process_stub
然后将程序作为单独的进程启动并打印其PID(并在Windows上也显示线程ID).信息被打印到管道然后被读取ConsoleProcess::readStubOutput()
,这是Utils.dll
QtCreator使用的库的一部分.
当"劣质"进程(您的应用程序)在处理完整个通信之前完成执行时,会发生此问题.ConsoleProcess::readStubOutput()
尝试OpenProcess()
在具有闭合句柄的不存在进程上使用.OpenProcess()
失败因此错误"无法获得劣质的句柄:参数不正确.".整个错误不是很温和处理(嗯,现在是什么?)...: - /
解决方案:
当您添加一些用户输入操作,暂停,睡眠,延迟或只是一些循环时,应用程序的执行时间会更长,错误消失.在您的应用程序退出之前,有足够的时间ConsoleProcess::readStubOutput()
执行OpenProcess()
.所以作为一个workaroud我建议这样做,直到修复bug.