我创建了以下程序,需要在父进程和子进程之间“打乒乓球”。
甚至在处理它的时候,在编译的时候,我注意到我的电脑开始越来越辛苦地工作,但我真的不认为这是一个问题。
最后我发现我的 Linux 崩溃了,创建了大量不同的进程,减慢了 PC 的速度,还创建了大量临时/日志文件,导致我的磁盘有 200MB 的可用空间而不是 35GB。
我怎样才能解决这些问题?
- 我怎样才能阻止我的程序创建许多不同的进程?
- 我该如何清理我的日志目录?我尝试
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);
}
}