ERRORE: Fatal IO error 11 (Risorsa temporaneamente non disponibile) on X server

di Anonimizzato21875 il
5 risposte
Buongiorno.
Mi capita in modo del tutto casuale che il mio applicativo vada in crash, credo nel momento di eseguire la quarta di questo gruppo di istruzioni:
Glib::RefPtr<Gdk::Window> root = Gdk::Window::get_default_root_window();
usleep(100000);
cout << "Dimensioni2 " << x << " " << y << " " << width << " " << height << endl;
Glib::RefPtr<Gdk::Pixbuf> immagine = Gdk::Pixbuf::create(rootmio, x, y, width, height);
L'errore che mi viene esposto è: Fatal IO error 11 (Risorsa temporaneamente non disponibile) on X server.
La possibilità di questo errore diminuisce molto se do un'attesa leggermente più lunga con la seconda istruzione riportata sopra.
Che voi sappiate, c'è la possibilità di chiedere se le risorse necessarie all'esecuzione di quella istruzione sono libere prima di eseguirla ?
Molte grazie.

5 Risposte

  • Sai gestire le eccezioni?
  • No, cosa dovrei cercare ?
  • While o for con n tentativi e un try catch che ritenta sleep+comando.
  • Molte grazie.
  • Ho inserito il blocco di istruzioni in try catch, come mi ha suggerito Weierstrass, ma continuo ad avere l'errore occasionale senza che entri nella routine catch. Per favore, mi dite dove sbaglio ? Ecco la routine:
    while (true) {
    try {
    cout << "Dimensioni1 " << x << " " << y << " " << width << " " << height << endl;
    Glib::RefPtr<Gdk::Window> root = Gdk::Window::get_default_root_window();
    cout << "Dimensioni2 " << x << " " << y << " " << width << " " << height << endl;
    Glib::RefPtr<Gdk::Pixbuf> immagine = Gdk::Pixbuf::create(root, x, y, width, height);
    cout << "Dimensioni3 " << immagine->get_width() << " " << immagine->get_height() << endl;
    HRvbl.ImmaginiVarie.UltimaImmagineCatturata = immagine;
    cout << "Dimensioni4 " << HRvbl.ImmaginiVarie.UltimaImmagineCatturata->get_width() << " " <<
    HRvbl.ImmaginiVarie.UltimaImmagineCatturata->get_height() << endl;
    HRvbl.ImmaginiVarie.UltimaImmagineCatturata->save(HRvbl.cartellalavoro + "/Ultima immagine CATTURATA.bmp", "bmp");
    HRvbl.ImmaginiVarie.ImmagineDaConvertire = HRvbl.ImmaginiVarie.UltimaImmagineCatturata;
    ConvertiImmagine();
    // HRvbl.HRnet_MAIN->do_320_ConvertiImmagine();
    HRvbl.ImmaginiVarie.UltimaImmagineCatturataTXT = HRvbl.ImmaginiVarie.UltimaImmagineCONVERTITATXT;
    // HRvbl.HRnet_0100->qt5UltimaImmagineCatturata->set(desk1);
    HRvbl.swbloccato_320_CatturaImmagine = false;
    cout << "Esce da CATTURAIMMAGINE" << endl;
    break;
    } catch (...) {
    cout << ".................... Eccezione 10 su CatturaImmagine" << endl;
    continue;
    }
    }

    In esecuzione, ha lavorato bene per 31 immagini e al 32°tentativo ha prodotto la seguente risposta:
    EEEx inizio loop 10
    Controlla che non sia visualizzato nulla al posto dell'immagine ELIMINARE
    Entra in CATTURAIMMAGINE
    Dimensioni1 28 268 60 55
    Dimensioni2 28 268 60 55
    Gdk-Message: 18:43:50.812: HRnet: Fatal IO error 11 (Risorsa temporaneamente non disponibile) on X server :0.0.

    Evidentemente non ho capito come si usa la tecnica try catch. Mi aiutate, per favore ?
    Vi ringrazio.
Devi accedere o registrarti per scrivere nel forum
5 risposte