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 05:55 | Komunita

    O víkendu probíhá v Praze na Karlově náměstí 13 konference Installfest 2026. Na programu je celá řada zajímavých přednášek a workshopů. Vstup na konferenci je zcela zdarma, bez nutnosti registrace. Přednášky lze sledovat i online na YouTube.

    Ladislav Hagara | Komentářů: 4
    dnes 05:22 | Komunita

    Mozilla a společnost Mila oznámily strategické partnerství za účelem rozvoje open source a suverénní AI. Cílem je ukázat, že open source AI může konkurovat uzavřeným systémům. Obě organizace chtějí posílit technologickou suverenitu a snížit závislost na hrstce velkých technologických firem.

    Ladislav Hagara | Komentářů: 3
    dnes 04:00 | Humor

    Adam Rice předvedl, že pomocí DNS lze distribuovat a spustit kompletní hru DOOM. Rozdělil WAD soubory a binárky do téměř 2000 DNS záznamů v Cloudflare zóně (jeden TXT záznam v DNS může nést okolo 2000 znaků textu). Ty pak stáhl PowerShellem, dekomprimoval a spustil přímo v paměti počítače bez nutnosti zápisu na disk, což prakticky dokazuje, že DNS může sloužit jako distribuované úložiště dat a možný kanál pro načítání kódu. Repozitář projektu je na GitHubu.

    NUKE GAZA! 🎆 | Komentářů: 2
    včera 13:00 | Komunita

    Dnes a zítra probíhají Arduino Days 2026. Na programu je řada zajímavých přednášek. Sledovat je lze od 17:00 na YouTube. Zúčastnit se lze i lokálních akcí. Dnes v Poličce v městské knihovně a zítra v Praze na Matfyzu.

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

    Byla vydána beta verze Ubuntu 26.04 LTS s kódovým názvem Resolute Raccoon. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 26.04 LTS mělo vyjít 23. dubna 2026.

    Ladislav Hagara | Komentářů: 0
    včera 02:22 | Komunita Ladislav Hagara | Komentářů: 10
    26.3. 23:22 | Komunita

    Ubuntu plánuje v budoucích verzích nahradit tradiční nástroje pro synchronizaci času (chrony, linuxptp a gpsd) novým, v Rustu napsaným ntpd-rs, který nabídne vyšší bezpečnost a stabilitu.

    Ladislav Hagara | Komentářů: 3
    26.3. 22:33 | Nová verze

    Byla vydána nová verze 7.6 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Správce hesel KeePassXC byl nahrazen správcem hesel GNOME Secrets. Bitcoinová peněženka Electrum byla povýšena na verzi 4.7.0. Tor Browser byl povýšen na verzi 15.0.8. Další novinky v příslušném seznamu.

    Ladislav Hagara | Komentářů: 1
    26.3. 11:33 | Zajímavý článek

    Chris Down v obsáhlém článku „vyvrací mýty o zswap a zram“, vysvětluje, co vlastně dělají a jaké jsou mezi nimi rozdíly. Doporučuje vyhýbat se zram na serveru a bez OOM.

    |🇵🇸 | Komentářů: 1
    26.3. 11:22 | IT novinky

    Porota v Los Angeles shledala firmy Google a Meta odpovědnými v přelomovém soudním sporu, který se týká závislosti na sociálních sítích; firmy musí zaplatit odškodné tři miliony dolarů (63,4 milionu Kč). Společnosti, které s verdiktem nesouhlasí, čelily obvinění, že své sociální sítě a platformy záměrně navrhly tak, aby si na nich děti vypěstovaly závislost. Porota došla k závěru, že technologické společnosti při navrhování a

    … více »
    Ladislav Hagara | Komentářů: 15
    Které desktopové prostředí na Linuxu používáte?
     (15%)
     (7%)
     (1%)
     (12%)
     (30%)
     (2%)
     (5%)
     (1%)
     (13%)
     (24%)
    Celkem 1169 hlasů
     Komentářů: 27, poslední 17.3. 19:26
    Rozcestník

    Dotaz: inotify nezachycuje IN_MOVED_TO event pri prejmenovani

    tomes.io avatar 4.1.2014 15:25 tomes.io | skóre: 12 | blog: tomesh
    inotify nezachycuje IN_MOVED_TO event pri prejmenovani
    Přečteno: 274×
    Ahoj,

    potrebuji pomoci inotify ziskat jmeno souboru/adresare, ktery byl prejmenovan. Dle manualu se v takove situaci vygeneruji dva eventy, IN_MOVED_FROM a IN_MOVED_TO se stejnym cookie. Muj program nize ale zachyti jen IN_MOVED_FROM. MOVED_TO se vubec nevygeneruje a me by zajimalo, jestli mam nekde chybu, nebo uz tohle inotify nedela?

    Pri rename treba souboru, se po sobe vygeneruje jenom IN_MOVED_FROM a OPEN. Nevim proc ne MOVED_TO...
    
    
    #define EVENT_SIZE  ( sizeof (struct inotify_event) )
    #define BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 ) )
    
    int main(int argc, char **argv)
    {
    	int length, i = 0;
    	int fd;
    	int wd;
    	char buffer[BUF_LEN];
    
    	fd = inotify_init();
    
    	if (fd < 0) {
    		perror("inotify_init");
    	}
    
    	wd = inotify_add_watch(fd, "/home/tomesh/Dropbox/C/sync", IN_ALL_EVENTS);
    
    
    	if (length < 0) {
    		perror("read");
    	}
    
    	while (1) {
    		length = read(fd, buffer, BUF_LEN);
    		struct inotify_event *event = (struct inotify_event *) &buffer[ i ];
    		if (event->len) {
    
    			if (event->mask & IN_CREATE) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s was created.\n", event->name);
    				} else {
    					printf("The file %s was created.\n", event->name);
    				}
    			}
    
    			if (event->mask & IN_DELETE) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s was deleted.\n", event->name);
    				} else {
    					printf("The file %s was deleted.\n", event->name);
    				}
    			}
    			if (event->mask & IN_MODIFY) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s was modified.\n", event->name);
    				} else {
    					printf("The file %s was modified.\n", event->name);
    				}
    			}
    
    			if (event->mask & IN_MOVED_FROM) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was moved from.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was moved from.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_MOVED_TO) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was moved to.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was moved to.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_MOVE_SELF) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %ds was itself moved.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was itself moved.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_DELETE_SELF) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was itself deleted.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was itself deleted.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_OPEN) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was opened.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was opened.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_ATTRIB) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d attr was changed.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d attr was changed.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_ACCESS) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was accessed.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was accessed.\n", event->name, event->cookie);
    				}
    			}
    
    
    		}
    	}
    	(void) inotify_rm_watch(fd, wd[0]);
    	(void) close(fd);
    
    	exit(0);
    }
    
    

    Řešení dotazu:


    Odpovědi

    4.1.2014 16:35 chrono
    Rozbalit Rozbalit vše Re: inotify nezachycuje IN_MOVED_TO event pri prejmenovani
    Skontroloval by som, či funkcia read nevrátila viac udalostí v jednom volaní.

    PS: Ten kód vyzerá tak, že takú kontrolu tam kedysi pravdepodobne mal (tipujem to podľa tej nevyužitej premennej i).
    4.1.2014 17:25 Bill Gates
    Rozbalit Rozbalit vše Re: inotify nezachycuje IN_MOVED_TO event pri prejmenovani
    i += EVENT_SIZE + event->len;
    tomes.io avatar 4.1.2014 17:55 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: inotify nezachycuje IN_MOVED_TO event pri prejmenovani
    Diky vsem, uz to funguje jak ma:
    
    #define EVENT_SIZE  ( sizeof (struct inotify_event) )
    #define BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 ) )
    
    int main(int argc, char **argv)
    {
    	int length, i;
    	int fd;
    	int wd;
    	char buffer[BUF_LEN];
    	struct inotify_event *event;
    
    	fd = inotify_init();
    
    	if (fd < 0)
    		perror("inotify_init");
    
    	wd = inotify_add_watch(fd, "/home/tomesh/Dropbox/C/sync", IN_ALL_EVENTS);
    
    	while (1) {
    		i = 0;
    		length = read(fd, buffer, BUF_LEN);
    
    		if (length < 0)
    			perror("read");
    
    		if (length == 0)
    			sleep(1);
    		
    		while (i < length) {
    			
    			event = (struct inotify_event *) &buffer[i];
    			
    			if (event->mask & IN_CREATE) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s was created.\n", event->name);
    				} else {
    					printf("The file %s was created.\n", event->name);
    				}
    			}
    
    			if (event->mask & IN_DELETE) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s was deleted.\n", event->name);
    				} else {
    					printf("The file %s was deleted.\n", event->name);
    				}
    			}
    
    			if (event->mask & IN_MODIFY) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s was modified.\n", event->name);
    				} else {
    					printf("The file %s was modified.\n", event->name);
    				}
    			}
    
    			if (event->mask & IN_MOVED_FROM) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was moved from.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was moved from.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_MOVED_TO) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was moved to.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was moved to.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_MOVE_SELF) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %ds was itself moved.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was itself moved.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_DELETE_SELF) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was itself deleted.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was itself deleted.\n", event->name, event->cookie);
    				}
    			}
    			
    			if (event->mask & IN_ATTRIB) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d attr was changed.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d attr was changed.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_ACCESS) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was accessed.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was accessed.\n", event->name, event->cookie);
    				}
    			}
    
    			i += sizeof(struct inotify_event) +event->len;
    		}
    	}
    	(void) inotify_rm_watch(fd, wd);
    	(void) close(fd);
    
    	exit(0);
    }
    
    

    Založit nové vláknoNahoru

    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.