Creat ()

Da Gambas-it.org - Wikipedia.
Versione del 29 lug 2016 alle 01:55 di Vuott (Discussione | contributi) (Creata pagina con "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 riscriv...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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.

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



Riferimenti