Configuración de bandera inmutable usando ioctl () en C
He intentado crear un script que crea un archivo y luego lo establece como inmutable, similar alchattr +i
comando para linux.El script compila (con gcc),carreras y else crea el archivo. Sin embargo, elarchivo sí mismono es inmutable y se puede quitar con un simplerm -f
. He intentado apilar dondechattr
se llama y encontré una función llamadaioctl
. Luego usé la poca información que pude reunir y se me ocurrió lo que tengo a continuación. Lo reduje deext2_fs.h
pero simplemente no parece funcionar. Claramente he pasado por alto algo.
Actualizaciones a la entrada anterior: Compila perodevuelve -1 en la función ioctl ().Mala dirección se muestra conperror ().
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <linux/fs.h>
int main()
{
FILE *fp;
char shovel[16] = "I have a shovel!";
fp = fopen("/shovel.txt", "w+");
fwrite(shovel, sizeof(shovel[0]), sizeof(shovel)/sizeof(shovel[0]), fp);
ioctl(fileno(fp), FS_IOC_SETFLAGS, 0x00000010);
fclose(fp);
}
Cualquier ayuda apreciada.