Hey favore, non mi importa se mi sto chiedendo domanda banale, ma, si prega di qualcuno può aiutarmi con questo ..Quali sono i vantaggi di pwrite e pread su fwrite e fread?
risposta
È utile quando si eseguono operazioni di lettura/scrittura casuali. C'è anche un'opzione per Sqlite che sostituisce seek()
+ read()
e seek()
+ write()
con pread()/pwrite()
. Perché è utile? seek()
+ read()
e seek()
+ write()
sono entrambi un paio di chiamate di sistema mentre pread()
e pwrite()
sono chiamate di sistema singolo. Meno chiamate di sistema: più efficienza.
Ehi, ma come ottengo il descrittore di file .... Quando lo riapre mi restituisce un puntatore di file, quindi come posso ottenere un descrittore di file int ??? – Invictus
pread/pwrite sono chiamate di sistema POSIX (ad es. Linux, FreeBSD ...). stanno lavorando con i descrittori di file UNIX che sono ints. puoi ottenerne uno usando open() syscall (funzione). guarda http://linux.die.net/man/2/pwrite – GreenScape
@Invictus: 'FILE *' può essere convertito nel grezzo 'int'' fd' con ['fileno (3)'] (https://linux.die.net/man/3/fileno) se vuoi usare 'fopen', ma a volte usa il' fd' sottostante con le chiamate di sistema di basso livello. Si noti che le chiamate di sistema di basso livello non vedono il buffering dello spazio utente degli oggetti 'stdio'' FILE * ', quindi si potrebbero avere problemi se il buffer dello spazio utente dice una cosa e lo si ignora con' write'/' chiamate pwrite'/'read' /' pread'. – ShadowRanger
Ci sono due parti:
differenza tra
pread
/pwrite
eread
/write
:Sono entrambi allo stesso livello, ovvero chiamate di sistema. Ci sono due differenze:
- Le varianti "p" prendono l'offset da cui leggere, quindi sono indipendenti dal puntatore del file corrente. Ciò rende più facile la lettura/scrittura da più thread contemporaneamente.
- Le varianti "p" funzionano solo su file ricercabili (cioè file reali, non pipe, socket o dispositivi).
Differenza tra
read
/pread
/write
/pwrite
efread
/fwrite
:Le varianti "f" sono involucri runtime standard di ex (utilizzando le varianti di base). Supportano il buffering in-process. Ciò può migliorare in modo significativo le prestazioni per codice semplice, ma rende impraticabili altre funzionalità del livello di chiamata di sistema.
utilizzare solo le varianti "P" se si dispone di un buon uso per la lettura di offset casuale (evitando cerca e permettendo l'accesso simultaneo tramite un handle di file), che spesso il caso con un qualche tipo di file di database (record- orientato con record a offset conosciuti) e raramente in altre applicazioni.
Eh? Non vedo alcun supporto per scatter-gather in pread()/pwrite(). Forse intendevi readv()/writev()? Alcuni sistemi come Linux e alcune varianti BSD hanno "combination" syscalls preadv()/pwritev() ma non fa ancora parte di POSIX. – janneb
@janneb: Hm, giusto. Ho erroneamente ricordato qualcosa e in realtà non ho letto la pagina man, anche se l'ho aperta. –
Ehi, ma come ottengo il descrittore di file .... Quando lo riapre mi restituisce un puntatore di file, quindi come posso ottenere un descrittore di file int ??? – Invictus
La posizione del file corrente non cambia dopo una chiamata a pread
/pwrite
.
Anche perché non c'è bisogno di chiamare lseek
per cambiare la posizione del file corrente pread
/pwrite
evitare potenziali condizioni di gara quando più thread sono coinvolti.
- 1. php gregge e fread e fwrite
- 2. dimensioni di fread/fwrite e conteggio
- 3. Quali sono i vantaggi di PyQt su PyGTK e viceversa?
- 4. Quali sono i vantaggi di MongoDB su MySQL e PostgreSQL?
- 5. Quali sono i vantaggi e gli svantaggi dell'utilizzo di ARC?
- 6. PHP utilizzando fwrite e fread con il flusso di input
- 7. Quali sono i vantaggi dell'uso di Jack e Jill?
- 8. Quali sono i vantaggi e gli svantaggi dell'utilizzo di OpenID?
- 9. Perché MVVM e quali sono i suoi principali vantaggi?
- 10. Quali sono i vantaggi nell'utilizzo di Qt?
- 11. Quali sono i vantaggi dell'utilizzo di WCF?
- 12. Quali sono i vantaggi della covarianza e della controvarianza?
- 13. Quali sono i vantaggi/vantaggi dell'utilizzo di Python 3?
- 14. Postgresql enum quali sono i vantaggi e gli svantaggi?
- 15. quali sono le principali differenze tra fwrite e write?
- 16. Quali sono i veri vantaggi di ExpandoObject?
- 17. quali sono i vantaggi dell'uso di scrapyd?
- 18. Quali sono i vantaggi di NSBinaryStoreType?
- 19. Quali sono i vantaggi di JRebel?
- 20. Quali sono i vantaggi dell'utilizzo di automapper?
- 21. Quali sono i vantaggi di Persistenza Ignoranza?
- 22. Quali sono i vantaggi di LINQ su SQL?
- 23. Quali sono i vantaggi dell'uso di Elixir
- 24. Quali sono i vantaggi dell'impostazione di largeHeap su true?
- 25. Quali sono i vantaggi dell'uso di numpy.identity su numpy.eye?
- 26. ReactNative VS NativeScript: quali sono i vantaggi?
- 27. Quali sono i vantaggi dell'uso di Ruby NArray su array?
- 28. Quali sono i vantaggi di git su git-svn?
- 29. Quali sono i vantaggi dei puntoni
- 30. Quali sono i vantaggi delle coroutine?
Possibile duplicato di [Qual è la differenza tra read e pread in unix?] (Https://stackoverflow.com/questions/1687275/what-is-the-difference-between-read-and-pread-in- unix) –