Creat ()

Da Gambas-it.org - Wikipedia.

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

(vedi anche: /usr/include/cpio.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



Riferimenti