Torna indietro   Hardware Upgrade Forum > Software > Programmazione

 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco
Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco
MiniLED di fascia media con local dimming a 192 zone, 144 Hz nativi e audio firmato Devialet. La prova strumentale riscontra colori affidabili e gaming reattivo, per un prodotto molto accessibile e convincente. Ma la soundbar aggiuntiva è quasi d'obbligo
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)
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-04-2006, 20:54   #1
Oppid
Senior Member
 
Iscritto dal: Mar 2005
Città: Salerno
Messaggi: 477
domanda per esperti

Salve ragazzi, mi trovo di fronte ad un problema a cui non riesco a trovare una spiegazione!
Supponendo di avere un file scritto in c che contiente una:

char *str = "Ciao mondo";
printf("Salve mondo\n");
write(1,str,10);

il problema è il seguente:
Se eseguo normalmente a.out viene eseguita prima la printf e poi la write.
Ma se eseguo a.out > file ; cat file, viene eseguita prima la write e poi la printf!
Come mai accade questo!!!???
__________________
Felice di aver trascorso la mia adolescenza con winning eleven Toshiba A500-14F
Oppid è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2006, 21:07   #2
ArtX
Registered User
 
Iscritto dal: Feb 2005
Messaggi: 1856
forse è meglio se lo chiedi sulla sezione programmazione
ArtX è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2006, 09:21   #3
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Sposto in programmazione.

ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2006, 11:14   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da Oppid
char *str = "Ciao mondo";
printf("Salve mondo\n");
write(1,str,10);
Innanzitutto tieni presente che stai usando 2 funzioni di I/O ad un diverso livello. write è una delle funzioni native di Linux. printf è una delle funzioni della libreria standard del "C".
Le funzioni di I/O come la printf sono, notoriamente, bufferizzate. Le funzioni native come la write non credo che siano bufferizzate (dovrei comunque leggere bene la documentazione ).

Non so spiegarti esattamente e precisamente perché c'è questa differenza. Credo che il problema sia appunto una questione legata al buffering.

In generale, comunque, bisogna stare attenti ad utilizzare in modo "mixato" le funzioni native e le funzioni "di alto livello" della libreria standard del "C". Se vuoi risolvere la cosa, puoi fare così:
Codice:
char *str = "Ciao mondo";
printf("Salve mondo\n");
fflush (stdout);
write(1,str,10);
In questo modo (ho provato) hai sempre la stessa sequenza di output.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2006, 12:24   #5
Oppid
Senior Member
 
Iscritto dal: Mar 2005
Città: Salerno
Messaggi: 477
Quote:
Originariamente inviato da andbin
Innanzitutto tieni presente che stai usando 2 funzioni di I/O ad un diverso livello. write è una delle funzioni native di Linux. printf è una delle funzioni della libreria standard del "C".
Le funzioni di I/O come la printf sono, notoriamente, bufferizzate. Le funzioni native come la write non credo che siano bufferizzate (dovrei comunque leggere bene la documentazione ).

Non so spiegarti esattamente e precisamente perché c'è questa differenza. Credo che il problema sia appunto una questione legata al buffering.

In generale, comunque, bisogna stare attenti ad utilizzare in modo "mixato" le funzioni native e le funzioni "di alto livello" della libreria standard del "C". Se vuoi risolvere la cosa, puoi fare così:
Codice:
char *str = "Ciao mondo";
printf("Salve mondo\n");
fflush (stdout);
write(1,str,10);
In questo modo (ho provato) hai sempre la stessa sequenza di output.
andbin grazie per la risposta e per il codice esatto che risolve la cosa!
Cmq sono riuscito a capire il perchè....o almeno credo, quindi adesso lo scrivo casomai servisse ad altri!
La write come hai detto tu è una funzione nativa di linux ed è UNDBUFFERED, cioè appunto le istruzioni di I/O non bufferizzano i caratteri e vengono eseguite immediatamente, mentre la printf è una funzione della libreria standard di I/O ed è LINEBUFFERED ossia il buffer viene svuotato (e l'operazione di I/O viene eseguita) ogni qualvolta si incontra un carattere di newline o quando questo è pieno. Quindi viene prima "scritta" la write perchè essendo unbuffered i caratteri vengono scritti immediatamente, e poi la printf quando si incontra il carattere di newline....in sostanza è quello che avevi detti tu, più o meno. Grazie e ciao!
__________________
Felice di aver trascorso la mia adolescenza con winning eleven Toshiba A500-14F
Oppid è offline   Rispondi citando il messaggio o parte di esso
Old 25-04-2006, 18:39   #6
Bahamut Zero
Senior Member
 
L'Avatar di Bahamut Zero
 
Iscritto dal: Apr 2000
Città: Naples
Messaggi: 3907
Oppid domani andiamo insieme all'esame della Rescigno?
__________________
Cancellato stare lucido dal mio vocabolario -Speaker Cenzou-
Bahamut Zero è offline   Rispondi citando il messaggio o parte di esso
Old 25-04-2006, 18:46   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da Bahamut Zero
Oppid domani andiamo insieme all'esame della Rescigno?
Della serie ... "come è piccolo il mondo".
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet

Ultima modifica di andbin : 25-04-2006 alle 19:08.
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 25-04-2006, 23:37   #8
rdefalco
Senior Member
 
L'Avatar di rdefalco
 
Iscritto dal: Feb 2005
Città: Napoli (provincia)
Messaggi: 2372
Quote:
Originariamente inviato da andbin
Della serie ... "come è piccolo il mondo".
qui in sezione programmazione ne vengono spesso di colleghi miei di studio...

EDIT: oltretutto suggerirei, quando capita, di scriverlo che si tratta di un esercizio di esame. Anche a me è capitato di vedere richieste alquanto "bizzarre" che diventano "normali" viste in un ottica di esame. Almeno si capisce che è un problema da spiegare e NON da risolvere...
__________________
Raffo™ (io, non la birra) | informatica»unisa.it | my terzigno | για να είναι ή για να μην είναι
rdefalco è offline   Rispondi citando il messaggio o parte di esso
Old 26-04-2006, 09:25   #9
Oppid
Senior Member
 
Iscritto dal: Mar 2005
Città: Salerno
Messaggi: 477
Quote:
Originariamente inviato da Bahamut Zero
Oppid domani andiamo insieme all'esame della Rescigno?
ahuahuahuahuahuahuaahu.....con Abate cmq!
__________________
Felice di aver trascorso la mia adolescenza con winning eleven Toshiba A500-14F
Oppid è offline   Rispondi citando il messaggio o parte di esso
Old 26-04-2006, 15:53   #10
rdefalco
Senior Member
 
L'Avatar di rdefalco
 
Iscritto dal: Feb 2005
Città: Napoli (provincia)
Messaggi: 2372
tutto fatto!
__________________
Raffo™ (io, non la birra) | informatica»unisa.it | my terzigno | για να είναι ή για να μην είναι
rdefalco è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
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...
Blue Origin sta ricostruendo velocemente...
La sovranità digitale non è...
ESS obbligatorio da luglio: il rivoluzio...
Batterie Tesla rubate direttamente fuori...
Il Governo statunitense anticipa di 5 an...
Steam Machine costa troppo? Non per i ba...
AWS e Azure sono gatekeeper e vanno rego...
Huawei presenta una nuova infrastruttura...
Logitech G e Activision uniscono le forz...
Snapdragon Summit 2026: ecco quando sara...
Sardegna, debutta il primo treno a idrog...
CXMT non ci salverà dai prezzi de...
Tidal contro la musica creata con l'inte...
Videproiettore compatto XGIMI MoGo 2 Pro...
Narwal rilancia su Amazon per il post-Pr...
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: 22:19.


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