Я работаю над CUPS-фильтром в C ++ (g ++ в качестве компилятора). Код представляет собой процесс аутентификации, и только может освободить задание, если аутентификация правильна. Если это не так, я должен отменить задание на печать.
Когда я печатаю документ и фильтр работает, он запускает кучу кода в процессе аутентификации, но внезапно он перестает работать. Если я комментирую часть кода (неважно, что это за часть), он работает немного корректнее в последовательности аутентификации.
Я проверил код, когда я разделил тогда, и поток работает нормально.
Есть возможная причина этой ошибки — ограничение размера стека, ограничение по времени или другая распространенная ошибка?
Благодарю.
Код:
Ожидание ответа аутентификации (Java создает файл данных)
/** Start monitor of authentication response **/
time_t starttime, now;
time(&starttime);
pthread_t thread_id = starttime;
pthread_create(&thread_id, 0, &FileManager, NULL);
do{
sleep(1);
time(&now);
}while(!file_available && difftime(now, starttime) < config.GetJobTimeout());
pthread_cancel(thread_id);
…
ReturningJob returningJob;
returningJob.Execute(path + expected_filename);
Возвращение файла Job
this->Fill(filepath);
std::string xml = this->GetSerializedXML();
this->SaveFile(this->GenerateFilename(path), xml);
Задача ещё не решена.
Других решений пока нет …