C 程序创建了许多进程,导致操作系统崩溃,并将 40GB 塞入日志目录

C 程序创建了许多进程,导致操作系统崩溃,并将 40GB 塞入日志目录

我创建了以下程序,需要在父进程和子进程之间“打乒乓球”。

甚至在处理它的时候,在编译的时候,我注意到我的电脑开始越来越辛苦地工作,但我真的不认为这是一个问题。

最后我发现我的 Linux 崩溃了,创建了大量不同的进程,减慢了 PC 的速度,还创建了大量临时/日志文件,导致我的磁盘有 200MB 的可用空间而不是 35GB。

我怎样才能解决这些问题?

  1. 我怎样才能阻止我的程序创建许多不同的进程?
  2. 我该如何清理我的日志目录?我尝试 sudo apt autoremove删除autoclean目录.gz中的所有文件/var/log

但这没用。/var/log不知为何,我的磁盘空间仍然只有 200MB 的空闲空间和将近 40GB 的目录空间。

我不想删除/var/log目录中的必要文​​件,所以我不会删除整个目录。

为什么我的程序甚至创建了这么多临时文件或日志文件?

谢谢。

is_parent_turn = 1;

void handle_siguser1(int signum);
void handle_siguser1(int signum);

int main()
{
    /*  create a child process  */
    pid_t pid = fork();
    
    if (pid < 0)
        exit(1);
    
    signal(SIGUSR1, handle_siguser1);
    signal(SIGUSR2, handle_siguser2);
    
    /*  returned to the newly created child process. */
    if (0 == pid)
    {   
        while (1)
        {
            /*  pause child process and let parent to begin */
            sleep(2);
            
            kill(getppid(), SIGUSR2);
            
        }
    }
        
    /* returned to parent */
    else
    {   
        while (1)
        {
            kill(getpid(), SIGUSR1);
        }
    }
        
    return 0;   
}
/******************************************************************************/
void handle_siguser1(int signum)
{
    if (is_parent_turn)
    {
        printf("\n\nPING\n\n");
        is_parent_turn = 0;
    }
    
    else
    {
        sleep(2);
    }
}
/******************************************************************************/
void handle_siguser2(int signum)
{
    if (!is_parent_turn)
    {
        printf("\n\nPONG\n\n");
        is_parent_turn = 1;
    }
    
    else
    {
        sleep(2);
    }
}

在此处输入图片描述

在此处输入图片描述

相关内容