Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Amazon porta i colori sul suo Kindle da scrittura più grande: schermo Colorsoft a 11 pollici, processore quad-core, penna premium più reattiva e strumenti IA per le note, sono le note salienti. Il salto di prezzo rispetto al modello in bianco e nero si fa sentire, anche se la percezione è quella di trovarsi di fronte a un prodotto di fascia altissima, per veri appassionati
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-03-2006, 11:48   #1
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
[C] Funzione access()

Mi servivano alcune delucidazioni riguarda la funzione access(). Per vedere se un file esiste gli passo il nome del file e la costante F_OK giusto? Il nome del file deve comprendere l'estensione? E alla fine se il file esiste che valore mi torna la funzione? Grazie.
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 11:55   #2
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Mi servivano alcune delucidazioni riguarda la funzione access(). Per vedere se un file esiste gli passo il nome del file e la costante F_OK giusto?
Sì. Anche se il metodo non è proprio corretto (il file potrebbe essere eliminato da qualcuno subito dopo la chiamata access)
Quote:
Il nome del file deve comprendere l'estensione?

Quote:
E alla fine se il file esiste che valore mi torna la funzione?
0
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 12:25   #3
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Ok grazie. E per vedere se un file è già aperto con access() si può?
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 12:30   #4
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
mmm non credo.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 12:39   #5
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
No perché siccome devo controllare anche se un file è già aperto (e quando il file aperto ha estensione .$$$) mi chiedevo se si potesse fare. Quindi come potrei fare per controllare questa cosa?
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 12:54   #6
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Non potrei ad esempio verificare sempre con access() l'esistenza del file con estensione .$$$? Cioè io gli passo il file con l'estensione $$$ e se mi torna 0 allora so che è aperto.
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 13:35   #7
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Non sono esperto di win32, ma immagino che ci siano modi più efficaci per farlo.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 15:26   #8
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Il programma verrà compilato sotto Linux.
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 15:44   #9
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Ma... intendi aperto da chiunque o dalla tua stessa applicazione?
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 15:55   #10
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Manugal
Il programma verrà compilato sotto Linux.
Allora devi fare come fa fuser...ovvero sfogliarti /proc/%d/fd/*...
In alternativa puoi usare inotify, ma credo che abbia effetto solo da quando crei il watch in poi
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 16:41   #11
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
x sottovento:
Qui stiamo implementando solo una libreria. Sicuramente sarà aperto da chiunque.

x ilsensine:
purtroppo non posso usare path nel mio programma. Ma a rigor di logica con access() secondo la procedura che ti ho descritto prima non potrebbe andare teoricamente?
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 16:51   #12
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Manugal
x ilsensine:
purtroppo non posso usare path nel mio programma.
Bè ok...ma /proc è un file system virtuale, non vedo perché non potresti usarlo...
Quote:
Ma a rigor di logica con access() secondo la procedura che ti ho descritto prima non potrebbe andare teoricamente?
No, access non indica se un file è già aperto. E' questa una informazione abbastanza complicata da ottenere, per come funziona linux (vedi il casino che fa fuser...). Puoi ad esempio eliminare un file eseguibile mentre è...in esecuzione, senza che il programma in esecuzione si accorga di nulla!
inotify potrebbe aiutarti, ma dovresti implementare un demone che effettua il monitoraggio dei file che ti interessano (se sono noti a priori).
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 16:55   #13
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da Manugal
x sottovento:
Qui stiamo implementando solo una libreria. Sicuramente sarà aperto da chiunque.

x ilsensine:
purtroppo non posso usare path nel mio programma. Ma a rigor di logica con access() secondo la procedura che ti ho descritto prima non potrebbe andare teoricamente?
Ciao,
all'interno dello stesso processo, puoi usare la stat(). Avendo il descrittore del file, la stat() ti da una serie di informazioni quali inode, ...
Le stesse info le puoi ottenere dato il nome del file. Quindi puoi sapere se il processo attuale ha gia' aperto il file in questione.

Per il controllo fra diversi processi... beh, e' veramente dura.
Per ora mi vengono in mente solo soluzioni parziali, e che ti obbligano a scrivere parecchio codice.

High Flying
Sottovento
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 17:00   #14
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da sottovento
all'interno dello stesso processo, puoi usare la stat(). Avendo il descrittore del file, la stat() ti da una serie di informazioni...
...non utili a stabilire se il file è già aperto. Anche per vedere se è già aperto dal processo corrente, devi spulciarti /proc/self/fd/*
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 17:03   #15
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Ok grazie.. vedo che sono soluzioni molto complicate

Nel nostro corso all'università non siamo ancora a questi livelli di programmazione. Possibile che i nostri prof ci abbiano dato una cosa così avanzata da fare?

La cosa più semplice quale sarebbe?
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 17:06   #16
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Cioè per farvela breve io devo implementare questa funzione:

Codice:
int DeleteDatabaseFile  	(   	char *   	 Name  	 )   	
  	

Cancella un file di database con nome Name.

Name è una stringa non nulla e NULL terminated e rappresenta il nome del file da cancellare.
Il nome deve essere quello di un DBF precedentemente creato con la funzione CreateDatabaseFile() (che già ho provveduto a creare).
La lunghezza totale del nome viene troncata a DBF_NAME_LENGTH caratteri e viene aggiunta l'estensione DBF_EXTENSION.

Il database deve essere chiuso, cioe' non deve esistere un file con lo stesso nome e estensione DBF_OPEN_EXT.

Parameters:
    [in] 	Name 	Nome del database file, stringa alfanumerica + '_' NULL terminated.

Returns:
    LPC_OK Database cancellato

    LPC_BAD_ARG Nome DB nullo o non valido

    LPC_DBF_OPEN Il database è aperto.

    LPC_FILE_ACCESS Il file non esiste o non può essere cancellato.
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 17:08   #17
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Manugal
La cosa più semplice quale sarebbe?
Vuoi dire la cosa _giusta_ quale sarebbe? Sicuramente non la tua logica, perché è soggetta a race. Ad esempio se la tua libreria implementa qualcosa del tipo:
Codice:
if (!isFileOpen(fname))
  OpenFile(fname);
else
   ErrorFileIsOpen();
hai una bella race tra il controllo e l'apertura del file. Queste situazioni si gestiscono con gli advisory lock oppure con i mandatory lock.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 17:10   #18
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da ilsensine
...non utili a stabilire se il file è già aperto. Anche per vedere se è già aperto dal processo corrente, devi spulciarti /proc/self/fd/*
Puoi scandire la lista dei descrittori della tua file table (l'apposito #include ti da la sua lunghezza). Per ogni descrittore puoi ottenere se e' in uso. Nel caso sia in uso, la stat ti dice l'inode. La stessa info la ottieni dal nome del file. Pertanto e' possibile stabilire se il file e' aperto (dal processo attuale) semplicemente usando la stat
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 17:11   #19
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Manugal
Il database deve essere chiuso, cioe' non deve esistere un file con lo stesso nome e estensione DBF_OPEN_EXT.
Ah quindi il vostro professore vuole che utilizziate i lockfile. Un lockfile è un file che contiene il pid del processo che ha aperto il db. Può essere creato in maniera atomica e senza race, creando prima un file temporaneo e poi tentando un link() (hard link) al nome del file vero e proprio. Devi gestire anche il caso in cui un precedente chiamante è "morto" senza eliminare il lockfile.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2006, 17:16   #20
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da sottovento
l'apposito #include ti da la sua lunghezza
L'apposito #include (immagino che stai parlando di FD_SETSIZE) ti fornisce la lunghezza _di default_ da usarsi per la (odiosa) select, che non ha nulla a che vedere con i file che il programma può aprire (e che puoi ridefinire a un valore diverso prima dell'include -- verrà usato il valore da te impostato, in questo caso). Il limite per processo sui file apribili è gestito da ulimit, e ha comunque un massimo assoluto nel kernel (e stiamo parlando di decine di migliaia di file descriptor, se non più, su un sistema normale). E' un metodo lento e poco pratico, e anche questo soggetto a race (v. ambienti multithread).
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
Rocket Lab acquisisce Iridium: nasce un ...
Una ventola nascosta e un design fuori d...
Display e fotocamera insieme: a Zurigo n...
Lenovo Idea Tab Plus, il tablet per stud...
Un ingegnere di AMD ha riprodotto in cas...
SanDisk Optimus cresce con nuovi SSD cer...
Loongson contro Intel e AMD: dalla Cina ...
Australia, quasi tutti gli under-16 aggi...
Oltre 1.300 miliardi di dollari per la p...
Un nuovo studio mette in dubbio la natur...
Crisi Volkswagen, torna l'ipotesi cessio...
Il CERN spegne il Large Hadron Collider:...
Stranger Than Heaven avrà una storia mol...
Il futuro prezzo di PS6 preoccupa i gioc...
AMD Ryzen 10000 sempre più vicini...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 19:26.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v