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.

Respuestas a la pregunta(2)

Su respuesta a la pregunta