Creat ()
La funzione creat( ), dichiarata nel file header di sistema "/usr/include/fcntl.h"
int creat (const char *__file, mode_t __mode)
crea un nuovo file o ne riscrive uno esistente. Viene restituito un valore di tipo Intero che rappresenta il descrittore del file creato.
La funzione creat( ) crea file, ma non può aprire il file esistente. Se si utilizza creat( ) su un file esistente, il file verrà troncato e può essere solo scritto.
Il secondo parametro è intero che rappresenta i permessi di accesso attribuiti al file. I valori, che rappresentano tali permessi, sono indicati nei file header:
- /usr/include/x86_64-linux-gnu/bits/stat.h
- /usr/include/x86_64-linux-gnu/sys/stat.h
Volendola utilizzare in Gambas, bisognerà dichiararla con Extern, nonché bisognerà dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta:
Private Extern creat(__file As String, __mode As Integer) As Integer In "libc:6"
Mostriamo un semplice esempio, nel quale viene creato un file con permessi di lettura e scrittura per l'utente, e di sola lettura per il gruppo e gli altri.
Library "libc:6" Private S_IRUSR As Integer = 256 Private S_IWUSR As Integer = 128 Private S_IRGRP As Integer = 32 Private S_IWGPR As Integer = 16 Private S_IROTH As Integer = 4 Private S_IWOTH As Integer = 2 ' int creat (const char *__file, mode_t __mode) ' Create and open FILE, with mode MODE. Private Extern creat(__file As String, __mode As Integer) As Integer ' int close(int _fd) ' Close the file descriptor FD. Private Extern close_C(_fd As Integer) As Integer Exec "close" Public Sub Main() Dim mode, fd As Integer mode = S_IRUSR Or S_IWUSR Or S_IRGRP Or S_IROTH fd = creat("/tmp/prova", mode) If fd < 0 Then Error.Raise("Impossibile creare il file !") close_C(fd) End