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í
×
    včera 04:00 | Nová verze

    raylib (Wikipedie), tj. multiplatformní open-source knihovna pro vývoj grafických aplikací a her, byla vydána ve verzi 6.0.

    Ladislav Hagara | Komentářů: 0
    24.4. 18:33 | IT novinky

    Nové verze AI modelů. Společnost OpenAI představila GPT‑5.5. Společnost DeepSeek představila DeepSeek V4.

    Ladislav Hagara | Komentářů: 0
    24.4. 15:33 | Zajímavý článek

    Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 164 (pdf) a Hello World 29 (pdf).

    Ladislav Hagara | Komentářů: 0
    24.4. 04:44 | Komunita

    Bylo oznámeno, že webový prohlížeč Opera GX zaměřený na hráče počítačových her je už také na Flathubu and Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    23.4. 23:11 | IT novinky

    Akcionáři americké mediální společnosti Warner Bros. Discovery dnes schválili převzetí firmy konkurentem Paramount Skydance za zhruba 110 miliard dolarů (téměř 2,3 bilionu Kč). Firmy se na spojení dohodly v únoru. O část společnosti Warner Bros. Discovery dříve usilovala rovněž streamovací platforma Netflix, se svou nabídkou však neuspěla. Transakci ještě budou schvalovat regulační orgány, a to nejen ve Spojených státech, ale také

    … více »
    Ladislav Hagara | Komentářů: 0
    23.4. 22:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 26.04 LTS Resolute Raccoon. Přehled novinek v poznámkách k vydání. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 11. vydání s dlouhodobou podporou (LTS).

    Ladislav Hagara | Komentářů: 2
    23.4. 11:55 | Nová verze

    V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Gitea (Wikipedie) byla vydána v nové verzi 1.26.0. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    23.4. 04:44 | Pozvánky

    Ve středu 29. dubna 2026 se v pražské kanceláři SUSE v Karlíně uskuteční 7. Mobile Linux Hackday, komunitní setkání zaměřené na Linux na mobilních zařízeních, kernelový vývoj i uživatelský prostor. Akce proběhne od 10:00 do večerních hodin. Hackday je určen všem zájemcům o praktickou práci s Linuxem na telefonech. Zaměří se na vývoj aplikací v userspace, například bankovní aplikace, zpracování obrazu z kamery nebo práci s NFC, i na úpravy

    … více »
    lkocman | Komentářů: 1
    22.4. 21:55 | Nová verze

    LilyPond (Wikipedie) , tj. multiplatformní svobodný software určený pro sazbu notových zápisů, byl vydán ve verzi 2.26.0. Přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    22.4. 20:33 | Nová verze

    Byla vydána nová verze 11.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 237 vývojářů. Provedeno bylo více než 2 500 commitů. Přehled úprav a nových vlastností v seznamu změn.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (8%)
     (2%)
     (13%)
     (31%)
     (3%)
     (6%)
     (2%)
     (15%)
     (25%)
    Celkem 1416 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    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: 276×
    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.