Open (): differenze tra le versioni
(Creata pagina con 'La funzione della libreria di C int open(const char *pathname, int flags) apre il file, individuato dall'argomento ''pathname'', per le operazioni di lettura/scrittura come s...') |
Nessun oggetto della modifica |
||
| Riga 15: | Riga 15: | ||
<FONT color=Gray>' ''int open(const char *pathname, int flags)'' | <FONT color=Gray>' ''int open(const char *pathname, int flags)'' | ||
' '' | ' ''Returns a file descriptor for the named file.''</font> | ||
Private <FONT color=#B22222>Extern open_C</font>(pathname As String, flags As Integer) As Integer In "<FONT color=#B22222>libc:6</font>" <FONT color=#B22222>'''Exec "open"'''</font> | Private <FONT color=#B22222>Extern open_C</font>(pathname As String, flags As Integer) As Integer In "<FONT color=#B22222>libc:6</font>" <FONT color=#B22222>'''Exec "open"'''</font> | ||
<FONT color=Gray>' ''int close(int fildes)'' | |||
' ''Deallocates the file descriptor indicated by fildes.''</font> | |||
Private Extern close_C As Integer In "libc:6" Exec "close" | |||
| Riga 25: | Riga 29: | ||
<FONT Color=gray>' ''Viene lanciato il programma editor di testo "Gedit", al quale si passa il file descriptor al file di testo appena sopra aperto:''</font> | <FONT Color=gray>' ''Viene lanciato il programma editor di testo "Gedit", al quale si passa il file descriptor al file di testo appena sopra aperto:''</font> | ||
Shell "gedit /proc" &/ Str(Application.Id) &/ "fd" &/ CStr(fd) | Shell "gedit /proc" &/ Str(Application.Id) &/ "fd" &/ CStr(fd) Wait | ||
close_C(fd) | |||
'''End''' | '''End''' | ||
Versione delle 09:21, 9 giu 2015
La funzione della libreria di C
int open(const char *pathname, int flags)
apre il file, individuato dall'argomento pathname, per le operazioni di lettura/scrittura come specificato nell'argomento flags. Essa restituisce il file-descriptor come collegamento al file aperto in lettura/scrittura. Tale file-descriptor è utilizzato da altre funzioni di I/O per fare riferimento al file aperto, al quale esso si riferisce.
Volendola utilizzare in Gambas, bisognerà dichiararla con Extern, nonché dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta. Da sottolineare che, poiché questa funzione esterna di C "open" è omonima alla funzione di Gambas "Open", bisognerà assegnarle un nome a piacere, ma si dovrà anche richiamare il suo vero nome con il comando Exec.
Dunque avremo ad esempio:
Private Extern open_C(pathname As String, flags As Integer) As Integer In "libc:6" Exec "open"
Semplice esempio di uso in Gambas:
Private Enum O_RDONLY = 0, O_WRONLY, O_RDWR
' int open(const char *pathname, int flags)
' Returns a file descriptor for the named file.
Private Extern open_C(pathname As String, flags As Integer) As Integer In "libc:6" Exec "open"
' int close(int fildes)
' Deallocates the file descriptor indicated by fildes.
Private Extern close_C As Integer In "libc:6" Exec "close"
Public Sub Main()
' Viene aperto in lettura un file di testo:
fd = open("/percorso/del/file/di/testo", O_RDONLY)
' Viene lanciato il programma editor di testo "Gedit", al quale si passa il file descriptor al file di testo appena sopra aperto:
Shell "gedit /proc" &/ Str(Application.Id) &/ "fd" &/ CStr(fd) Wait
close_C(fd)
End