abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

    dnes 12:22 | IT novinky

    V březnu byla oznámena spolupráce GrapheneOS s Motorolou. Nejnovější vlajka Motorola Signature 27 je první Motorola s oficiální podporou GrapheneOS. GrapheneOS (Wikpedie) je varianta Androidu zaměřující se na bezpečnost a soukromí.

    Ladislav Hagara | Komentářů: 0
    dnes 04:55 | Nová verze

    Omarchy (Wikipedie) je linuxová distribuce s dlaždicovým správcem oken Hyprland. Založena je na Arch Linuxu. Vydána byla v nové verzi 4.5.0. Nově také pro Apple Silicon, konkrétně pro M1/M2/M3/Neo MacBooky.

    Ladislav Hagara | Komentářů: 3
    dnes 03:22 | Nová verze

    Byla vydána nová stabilní verze 8.3 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 156 s bezpečnostními opravami z Chromia 157. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    včera 19:53 | Bezpečnostní upozornění
    V Xenu objevena zranitelnost. Chyba v mechanismu grant copy umožňuje škodlivému virtuálnímu stroji číst a přepisovat libovolnou paměť jiných VM včetně privilegované domény Dom0. Dotčené verze jsou Xen 4.6 a novější. V upstreamu jsou dostupné patche pro Xen 4.17 až 4.19 a vývojovou větev. Pro starší nepodporované verze 4.6–4.16 nejsou v XSA-523 přiloženy opravy.
    vencour | Komentářů: 1
    včera 16:55 | Nová verze

    Multimediální přehrávač mpv byl vydán ve verzi 0.42.0. Jde o větší balík změn po bezmála roce. Mimo jiné se lépe integruje s Waylandem nebo rozšiřuje podporu DVD/Blu-ray, např. umožňuje přehrávat rovnou obrazy médií (soubory iso).

    ʚĭɞ 🍉 | Komentářů: 0
    včera 12:22 | Nová verze

    Desktopové prostředí LXQt (Lightweight Qt Desktop Environment, Wikipedie) vzniklé sloučením projektů Razor-qt a LXDE bylo vydáno ve verzi 2.5.0. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 12:11 | Nová verze

    Byla vydána (𝕏) nová verze 8.0 LTS open source monitorovacího systému Zabbix (Wikipedie). Přehled novinek v oznámení na webu, v poznámkách k vydání a v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Nová verze

    Byla vydána verze R14.1.7 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.

    JZD | Komentářů: 4
    včera 00:33 | Nová verze

    Bazzite (Wikipedie), tj. linuxová distribuce vycházející z Fedora Linuxu a optimalizována pro hraní počítačových her, byla vydána ve verzi 45. S Open Gaming Collective (OGC) jádrem a novým Easy Anti-Cheatem pro Linux (EAC Linux v2).

    Ladislav Hagara | Komentářů: 0
    4.11. 22:11 | Bezpečnostní upozornění

    MikroTik zveřejnil vlastní bezpečnostní upozornění potvrzující, že zranitelnost linuxového jádra postihuje také RouterOS 7. Jde o use-after-free při zpracování IPv4 TCP spojení s IP options. Zranitelnost se týká provozu směřujícího na TCP službu samotného routeru, nikoli paketů, které router pouze přeposílá. Opraveno v long-term od 7.24.6, v stable od 7.25.1 a devel od 7.26beta5.

    vencour | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2992 hlasů
     Komentářů: 35, poslední dnes 23:27
    Rozcestník

    Dotaz: chyba při otevírání souboru "file.open(QIODevice::ReadOnly | QIODevice::Text)"

    9.8.2011 14:32 Milan Bača | skóre: 2 | Valašské Meziříčí
    chyba při otevírání souboru "file.open(QIODevice::ReadOnly | QIODevice::Text)"
    Přečteno: 533×
    Mohl by mi někdo prosím pomoct? Externím programem plním textový soubor, který si hlídám pomocí QFileSystemWatcher. Když se v něm něco objeví tak chci načíst všechny řádky a hned jej zase vymazat. Při prvním naplnění souboru, QFileSystemWatcher změnu souboru odchytí a spustí metodu checkFile(), která spustí metodu loadFile(STACK_FILE_PATH). A tady nastává chyba. Soubor se neotevře jen pro čtení a hned se vymaže. V logu se mi objeví "Proces nemá přístup k souboru, neboť jej právě využívá jiný proces.". Při dalším naplnění souboru už vše funguje jak má. Už opravdu netuším co dělám špatně. Mohl by mě někdo nakopnout správným směrem? děkuji
        QFileSystemWatcher *fileWatcher;
        fileWatcher = new QFileSystemWatcher(this);
        fileWatcher->addPath(STACK_FILE_PATH);
        connect(fileWatcher, SIGNAL(fileChanged(QString)), this, SLOT(checkFile()));
    
    void Controller::checkFile()
    {
        if (connectionState)
            fileSystem->loadFile(STACK_FILE_PATH);
    }
    
    void FileSystem::loadFile(const QString &fileName)
    {
        QFile file(fileName);
        QStringList pathsList;
        if (file.exists() && (file.size() > 0)) {
            if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
                emit newLog(tr("Čtení"));
                emit newLog(file.errorString());
            } else {
                QTextStream out(&file);
                while (!out.atEnd()) {
                    QString line = out.readLine();
                    pathsList << line;
                }
                emit newListForCheck(pathsList);
                file.close();
            }
    
            if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
                emit newLog(tr("Výmaz"));
                emit newLog(file.errorString());
            } else {
                QTextStream in(&file);
                in << "";
                file.close();
            }
        }
    }
    

    Odpovědi

    9.8.2011 22:14 T.O.M. | skóre: 22 | blog: T.O.M.'s blog | Ostrava
    Rozbalit Rozbalit vše Re: chyba při otevírání souboru "file.open(QIODevice::ReadOnly | QIODevice::Text)"

    S QFileSystemWatcher můžeš narazit na spoustu problémů lišících se platformu od platformy. Mně se osvědčilo vždy na začátku slotu napojeném na fileChanged/directoryChanged cestu z "wočru" odebrat, provést co je třeba a na konci slotu cestu znovu přidat. Stávalo se mi v některých případech, že signál o změně přišel jen jednou. Možná to vyřeší tvůj problém s omezeným přístupem k souboru.

    Ještě pár tipů:

    while (!out.atEnd()) {
        QString line = out.readLine();
        pathsList << line;
    }
    bych nahradil za:
    while (file.canReadLine()) {
        QString line = out.readLine();
        pathsList << line;
    }
    a smazat obsah souboru jde lépe:
    if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
        emit newLog(tr("Výmaz"));
        emit newLog(file.errorString());
    } else {
        file.close();
    }

    31.8.2011 10:56 Milan Bača | skóre: 2 | Valašské Meziříčí
    Rozbalit Rozbalit vše Re: chyba při otevírání souboru "file.open(QIODevice::ReadOnly | QIODevice::Text)"
    Zdravím, odebrání cesty problém nevyřešilo, jen se objevuje náhodně.

    náhrada kódu
    while (!out.atEnd()) {
        QString line = out.readLine();
        pathsList << line;
    }
    
    za
    while (file.canReadLine()) {
        QString line = out.readLine();
        pathsList << line;
    }
    
    nefunguje, ale to mě zas tak netrápí jak to sledování souboru

    Založit nové vlákno • Nahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.