Рейтинг:0

Программа C создала множество процессов, вывела из строя ОС и запихнула 40 ГБ в каталог журналов.

флаг pl

Я создаю следующую программу, которая должна «играть в пинг-понг» между родительским процессом и его дочерним процессом.

Еще во время работы над ним, во время компиляции, я заметил, что мой компьютер начинает работать все больше и больше, но я не думал, что это проблема.

В конце концов я обнаружил, что ломаю свой Linux, создавая множество различных процессов, которые замедляют работу ПК, а также создают много файлов временных файлов / журналов и приводят к тому, что на моем диске остается 200 МБ свободного места вместо 35 ГБ.

Как я могу исправить эти проблемы?

  1. Как я могу остановить мою программу от создания множества различных процессов?
  2. Как я могу очистить каталог журналов? Я пытался sudo apt автоудаление и Автоматическая очистка и удалить все .gz файлы в /вар/журнал каталог.

Но это не помогло. На моем диске по-прежнему свободно 200 МБ и /вар/журнал каталог почти 40 ГБ по какой-то причине.

Я не хочу удалять необходимые файлы, находящиеся в /вар/журнал каталог, поэтому я не удаляю весь каталог.

Почему моя программа вообще создала так много временных файлов или файлов журналов?

Спасибо.

is_parent_turn = 1;

недействительным handle_siguser1 (int signum);
недействительным handle_siguser1 (int signum);

основной ()
{
    /* создаем дочерний процесс */
    pid_t pid = fork();
    
    если (пид < 0)
        выход(1);
    
    сигнал (SIGUSR1, handle_siguser1);
    сигнал (SIGUSR2, handle_siguser2);
    
    /* возвращается только что созданному дочернему процессу. */
    если (0 == pid)
    {   
        пока (1)
        {
            /* приостановить дочерний процесс и позволить родителю начать работу */
            спать (2);
            
            kill(getppid(), SIGUSR2);
            
        }
    }
        
    /* возвращается к родителю */
    еще
    {   
        пока (1)
        {
            kill(getpid(), SIGUSR1);
        }
    }
        
    вернуть 0;   
}
/********************************************************* *******************************/
недействительным handle_siguser1 (int signum)
{
    если (is_parent_turn)
    {
        printf("\n\nPING\n\n");
        is_parent_turn = 0;
    }
    
    еще
    {
        спать (2);
    }
}
/********************************************************* *******************************/
недействительный handle_siguser2 (int signum)
{
    если (!is_parent_turn)
    {
        printf("\n\nPONG\n\n");
        is_parent_turn = 1;
    }
    
    еще
    {
        спать (2);
    }
}

введите описание изображения здесь

введите описание изображения здесь

флаг in
Вы можете задать этот вопрос на StackOverflow, сайте, ориентированном на разработку.
NoobCoder avatar
флаг pl
@matigo главный вопрос здесь: «Как мне очистить каталог `var/log` и удалить все файлы, созданные моей программой и занимающие более 35 ГБ, не удаляя действительно важные системные файлы
флаг in
Вы можете использовать терминал или Nautilus, чтобы попасть в каталог `/var/log/` и оттуда удалить большие файлы. Пока вы не удаляете каталоги и не меняете разрешения, все будет в порядке...
NoobCoder avatar
флаг pl
файл под названием `syslog` составляет 22 ГБ
Doug Smythies avatar
флаг gn
и какие записи есть в `/var/log/syslog`? Записи должны помочь вам отладить вашу программу.
Doug Smythies avatar
флаг gn
Ваша программа c кажется неполной и не компилируется, как указано. Я скомпилировал его, и он не делает никаких записей в `/var/log/syslog`, но он не зацикливается навсегда и не завершается. Он печатает «PING», затем «PONG» один раз. Вы должны убить свои вещи `killall a.out`

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.