Russian Qt Forum
Май 24, 2024, 08:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: exitStatus процесса - странное поведение  (Прочитано 1603 раз)
daimon
Гость
« : Январь 22, 2012, 04:09 »

Сгенерировал ошибку работы процесса - нет файла, сработал сигнал ошибки - нет файла код 0, а вот статус выхода говорит, что прошел нормальный выход. В чём беда? Важно, по сигналу emit finished(m_process->exitCode(), m_process->exitStatus(), this); хочу увидеть реальную работу процесса, а у меня получается, что всё прошло чудесно, только сигнал error(QProcess::ProcessError) выловил проблему, метод возврата строки ошибки не поможет - всегда возвращает - неизвестная ошибка (при любых условиях)

Код
C++ (Qt)
void CProcessThread::run()
{
 
if(m_process == NULL)
m_process= new QProcess();
 
connect(m_process,SIGNAL(finished(int , QProcess::ExitStatus)), this, SLOT(finish()));
connect(m_process,SIGNAL(error(QProcess::ProcessError)), this, SLOT(errorFinish()));
 
qDebug()<<"//---------------------------//\n"<<QString("start %1 Thread").arg(m_appStr)<<m_listParam;
 
m_process->start(m_appStr, m_listParam);
exec();
}
 
void CProcessThread::setParams( const QString& appStr, const QStringList& listParams )
{
m_appStr = appStr;
m_listParam = listParams;
}
 
CProcessThread::CProcessThread( const QString& appStr, const QStringList& listParam )
{
setParams(appStr,listParam);
m_process = NULL;
}
 
CProcessThread::CProcessThread()
{
 
m_process =NULL;
 
}
 
CProcessThread::~CProcessThread()
{
qDebug()<<QString("delete %1 Thread").arg(m_appStr);
  delete m_process;
  m_process = NULL;
}
 
void CProcessThread::finish()
{
qDebug()<<QString("finish %1 Thread").arg(m_appStr)<<m_process->exitCode()<<m_process->exitStatus()<< m_process->errorString()<<m_process->error();
 
 
emit finished(m_process->exitCode(), m_process->exitStatus(), this);
}
 
void CProcessThread::errorFinish()
{
emit error(m_process->error(), m_process->errorString());
finish();
}
 
« Последнее редактирование: Январь 22, 2012, 04:13 от daimon » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.143 секунд. Запросов: 17.