Вивчення основних команд операційної системи Linux. Вивчення файлової системи процесів /proc. Вивчення роботи «демонів». Програма «клієнт-сервер»
23

bool isMount;

 

bool floppy_is_mounted()

{

    char buff[255];  // буфер

    bool isMounted = false;

 

    FILE *f;

    f = fopen ("/proc/mounts", "r");

    if (f == NULL)

    {

        printf("Не удалось открыть файл \'/proc/mounts\'");

        return isMounted;

    }

    while (!feof(f))

    {

        fscanf (f, "%s", &buff);

        if (strcmp(buff, "/dev/fd0") == 0)

    isMounted = true;

    }

    fclose (f);   

    return isMounted;

}

 

int q = 0;

 

void signal_handler(int sig)

{

time_t t;

FILE* f;

switch(sig)

{

case SIGALRM:

if (isMount != floppy_is_mounted())

{

   isMount = !isMount;

   time (&t);

   f = fopen (LOG_FILE, "a");

   if (f != NULL)

   {

 if (isMount == true)

      fprintf(f, "Дисковод смонтирован [mount /dev/fd0] - %s", ctime(&t));

else fprintf(f, "Дисковод размонтирован [umount /dev/fd0] - %s", ctime(&t));

 

   }

   fclose(f);

                        }

break;