Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-05-2005, 08:11   #1
Gandalf_BD
Senior Member
 
L'Avatar di Gandalf_BD
 
Iscritto dal: Jun 2004
Messaggi: 760
[C - newbie] gestione errori di sistema

Ciao a tutti...
ho bisogno di un piccolo aiuto...
avrei bisogno di inserire una chiamata ad un errore di sistema in un certo punto del codice...
o meglio...
faccio una fopen e, se il file non viene trovato, vorrei che mi saltasse fuori un messaggio di errore...
ho sentito dire che è possibile farlo, con una funzione che dovrebbe chiamarsi error(), però non so in che libreria si trovi e, provando ad inserirla così com'è, il compilatore mi da questo errore -> too few parameters...
mi spiegate come si usa?
grazie
__________________
Gandalf_BD
--------------------------------------------
"When you aim at perfection, you discover it's a moving target"
Gandalf_BD è offline   Rispondi citando il messaggio o parte di esso
Old 06-05-2005, 08:12   #2
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
La funzione si chiama "perror", ed è dichiarata in stdio.
__________________
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 06-05-2005, 08:21   #3
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
Quote:
Originariamente inviato da ilsensine
La funzione si chiama "perror", ed è dichiarata in stdio.
funziona bene ho notato solo su linux su windows mia

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 06-05-2005, 08:24   #4
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Fenomeno85
funziona bene ho notato solo su linux su windows mia
mmm presumo che ti sei perso qualche carattere scrivendo il messaggio

Vuoi dire che su win non funziona come ti aspetti, immagino? Potrebbe essere; c'è comunque una API di windows per avere informazioni sugli errori, non so se funziona anche con fopen (oltre che con CreateFile).
__________________
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 06-05-2005, 08:24   #5
Gandalf_BD
Senior Member
 
L'Avatar di Gandalf_BD
 
Iscritto dal: Jun 2004
Messaggi: 760
Quote:
Originariamente inviato da ilsensine
La funzione si chiama "perror", ed è dichiarata in stdio.
grazie... e che parametri gli devo passare?
l'errore è sempre lo stesso o posso "decidere io" quale generare?
grazie 1000
__________________
Gandalf_BD
--------------------------------------------
"When you aim at perfection, you discover it's a moving target"
Gandalf_BD è offline   Rispondi citando il messaggio o parte di esso
Old 06-05-2005, 08:25   #6
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
Quote:
Originariamente inviato da ilsensine
mmm presumo che ti sei perso qualche carattere scrivendo il messaggio

Vuoi dire che su win non funziona come ti aspetti, immagino? Potrebbe essere; c'è comunque una API di windows per avere informazioni sugli errori, non so se funziona anche con fopen (oltre che con CreateFile).
ma mi ha mozzato delle parti

su windows non funziona bene perror

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 06-05-2005, 08:28   #7
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Gandalf_BD
grazie... e che parametri gli devo passare?
l'errore è sempre lo stesso o posso "decidere io" quale generare?
grazie 1000
Accetta una stringa, che è il prefisso da stampare. Ad es:

FILE *f = fopen(...);
if(!f) perror("fopen");

potrebbe stampare, in caso di errore di privilegi,
fopen: access denied

perror di per se è standard ansi; però come dice Fenomeno devi verificare se sia stata correttamente implementata sotto windows. L'alternativa mi sembra sia GetLastError, ma non so se funziona con fopen.
__________________
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 06-05-2005, 08:35   #8
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
dai provo e vi posto i risultati

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 06-05-2005, 08:46   #9
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
perror con fopen funziona bene ... mi ricordavo male

Con getlasterror torna errore 2 ma qui bisogna capire che evento significa

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 06-05-2005, 08:56   #10
Gandalf_BD
Senior Member
 
L'Avatar di Gandalf_BD
 
Iscritto dal: Jun 2004
Messaggi: 760
Quote:
Originariamente inviato da Fenomeno85
Con getlasterror torna errore 2 ma qui bisogna capire che evento significa[/b]
ma getlasterror è sempre nella stdio.h?
__________________
Gandalf_BD
--------------------------------------------
"When you aim at perfection, you discover it's a moving target"
Gandalf_BD è offline   Rispondi citando il messaggio o parte di esso
Old 06-05-2005, 10:11   #11
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
è sotto windows.h

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 06-05-2005, 11:02   #12
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
scusate l'OT, ma stavo morendo quando ho digitato fopen in google, come primo link mi ha restituito questo:

http://www.fondopensionefopen.it/


__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 06-05-2005, 12:03   #13
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
Quote:
Originariamente inviato da RaouL_BennetH
scusate l'OT, ma stavo morendo quando ho digitato fopen in google, come primo link mi ha restituito questo:

http://www.fondopensionefopen.it/


cmq i problemi se non erro era nella programmazione di rete


~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2005, 07:03   #14
Gica78R
Senior Member
 
L'Avatar di Gica78R
 
Iscritto dal: Mar 2005
Messaggi: 1653
Ciao...

Evito di aprire una nuova discussione perche' il tema e' piu' o meno lo stesso...

Con perror viene stampato un messaggio di errore relativo al valore 'corrente' della variabile errno. Sapete se c'e' qualche funzione analoga per stampare un messaggio relativo ad un valore arbitrario che errno potrebbe aver assunto in precedenza?
Mi spiego meglio: supponiamo che io esegua diverse chiamate a funzione, e che in caso di errore di queste mi vada a salvare, dopo ogni chiamata, il valore assunto da errno. Utilizzando questi valori salvati, posso in qualche modo stampare i corrispondenti messaggi d'errore in "differita"? Oppure, c'e' modo di redirigere l'output di perror su una stringa invece che su file? Mi serve perche' l'applicazione che sto facendo deve andare a 'compilare' piu' di un file di log, e voglio di volta in volta decidere su quale di questi file scrivere l'output di perror senza redirigerlo in continuazione.


Grazie,
Gica
Gica78R è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2005, 08:27   #15
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
strerror di string.h (e la funzione thread-safe strerror_r, per i sistemi che la supportano)
__________________
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 10-05-2005, 09:05   #16
Gica78R
Senior Member
 
L'Avatar di Gica78R
 
Iscritto dal: Mar 2005
Messaggi: 1653
Perfetto! Proprio quello che cercavo

Grazie mille,
Gica
Gica78R è offline   Rispondi citando il messaggio o parte di esso
Old 11-05-2005, 18:19   #17
Gica78R
Senior Member
 
L'Avatar di Gica78R
 
Iscritto dal: Mar 2005
Messaggi: 1653
Ho letto che la strerror() puo' produrre la stringa di errore nella lingua specificata attraverso la variabile d'ambiente LC_MESSAGES, ma non riesco a trovare quali sono i possibili valori che si possono assegnare a tale variabile
Qualcuno sa quali sono? Potrebbero essere gli stessi di LANG?
Ultima cosa: settando tale variabile in un processo, poi devo anche esportarla affinche' sia visibile ai figli del processo stesso?

Grazie,
Gica

Aggiornamento: se do il comando locale, vedo che tutte le variabili del tipo LC_QUALCOSA hanno un valore, anche LC_MESSAGES; se invece do il comando echo $LC_MESSAGES ottengo una stringa vuota. Perche'?

Ultima modifica di Gica78R : 11-05-2005 alle 18:27.
Gica78R è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2005, 07:56   #18
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Non ti conviene modificare quelle variabili d'ambiente, non c'è motivo. Devi usare le impostazioni di sistema, non imporre le tue. Così se un turco eseguirà il tuo programma, si ritroverà automaticamente i messaggi in turco.

Se proprio vuoi, le variabili d'ambiente si gestiscono con getenv/putenv (ma solo nel namespace corrente, ovvero solo per il processo corrente).
__________________
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 12-05-2005, 10:18   #19
Gica78R
Senior Member
 
L'Avatar di Gica78R
 
Iscritto dal: Mar 2005
Messaggi: 1653
Quote:
Originariamente inviato da ilsensine
Non ti conviene modificare quelle variabili d'ambiente, non c'è motivo. Devi usare le impostazioni di sistema, non imporre le tue. Così se un turco eseguirà il tuo programma, si ritroverà automaticamente i messaggi in turco.

Se proprio vuoi, le variabili d'ambiente si gestiscono con getenv/putenv (ma solo nel namespace corrente, ovvero solo per il processo corrente).
Si, su questo sono d'accordo... Solo che, come ho detto prima, apparentemente la variabile LC_MESSAGES non e' settata a nessun valore (stando a quanto prodotto da 'echo $LC_MESSAGES', mentre con il comando locale ottengo per la stessa variabile il valore "it_IT.UTF-8"). Percio' suppongo che i miei processi si ritrovino in esecuzione in un ambiente in cui tale variabile non e' settata appropriatamente, e quindi tutti i messaggi prodotti da strerror sono in inglese anziche' nella lingua locale.
Gica78R è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2005, 11:23   #20
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Allora, innanzitutto servono due cose: in primis, l'applicazione deve chiamare
setlocale(LC_ALL, "")
(definita in locale.h) in modo da poter utilizzare le impostazioni definite dalle variabili d'ambiente (nota che se non hai LC_MESSAGES sul tuo sistema, forse hai LC_ALL). Qui la man page è poco chiara, senza chiamare setlocale le variabili d'ambiente non hanno effetto. Quindi, è necessario che il database con le traduzioni per le tue localizzazioni sia presente; ad es. per it_IT.UTF-8 deve esistere il file
/usr/share/locale/it_IT/LC_MESSAGES/libc.mo
oppure il file
/usr/share/locale/it/LC_MESSAGES/libc.mo
Questo file dovrebbe essere fornito dalla distribuzione, ma molte non lo forniscono (ad es. sulla mia Mandrake non c'è).
In sintesi: chiama setlocale(LC_ALL, "") all'inizio del tuo programma e vivi tranquillo. Se non c'è la traslazione, vuol dire che manca libc.mo e su questo non puoi farci molto.
__________________
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


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Alcune partite NBA saranno trasmesse in ...
Intel Core 13000 e 14000 aumentano uffic...
Gemini sta per arrivare in Google Maps: ...
2 minuti per vedere le 27 offerte imperd...
Ray-Ban Meta Display: tecnologia sorpren...
Un mini PC a prezzo stracciato, non cerc...
Al via i coupon nascosti di ottobre: qua...
Ferrari Elettrica si aggiorna solo in of...
Doppio sconto sugli smartphone top Xiaom...
Samsung è sempre più prota...
ChatGPT ha pregiudizi politici? Ecco cos...
Un solo iPhone rubato ha portato alla sc...
Xiaomi 17 Ultra sta arrivando: ecco come...
Il Motorola Edge 70 non ha più se...
Alcuni Galaxy S26 utilizzeranno il chip ...
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: 14:14.


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