Eu creez următorul program care trebuie să „joace ping pong” între un proces părinte și procesul său copil.
Chiar și în timp ce lucram la el, în timp ce compilez, am observat că PC-ul meu începe să lucreze din ce în ce mai greu, dar nu prea credeam că este o problemă.
În cele din urmă, m-am trezit să-mi prăbușesc Linux-ul, creând o mulțime de procese diferite care încetinesc computerul și, de asemenea, creează o mulțime de fișiere temp/jurnal și fac ca discul meu să aibă 200 MB de spațiu liber în loc de 35 GB.
Cum pot rezolva aceste probleme?
- Cum pot opri programul meu să creeze o mulțime de procese diferite?
- Cum îmi pot curăța directorul de jurnale? am incercat
sudo apt autoremove
și Auto curatare
și ștergeți toate .gz
fișiere în /var/log
director.
Dar nu a ajutat. Spațiul meu pe disc rămâne liber de 200 MB și a /var/log
director de aproape 40 GB din anumite motive.
Nu vreau să elimin fișierele necesare care se află în fișierul /var/log
director, așa că nu șterg întregul director.
De ce a creat programul meu atât de multe fișiere temp sau jurnal?
Mulțumiri.
is_parent_turn = 1;
void handle_siguser1(int signum);
void handle_siguser1(int signum);
int main()
{
/* creează un proces copil */
pid_t pid = furk();
dacă (pid < 0)
ieșire(1);
semnal(SIGUSR1, handle_siguser1);
semnal(SIGUSR2, handle_siguser2);
/* a revenit la procesul copil nou creat. */
dacă (0 == pid)
{
în timp ce (1)
{
/* întrerupe procesul copilului și lasă părintele să înceapă */
somn(2);
kill(getppid(), SIGUSR2);
}
}
/* a revenit părintelui */
altfel
{
în timp ce (1)
{
kill(getpid(), SIGUSR1);
}
}
întoarce 0;
}
/************************************************ ********************************/
void handle_siguser1(int signum)
{
dacă (este_turn_părinte)
{
printf("\n\nPING\n\n");
is_parent_turn = 0;
}
altfel
{
somn(2);
}
}
/************************************************ ********************************/
void handle_siguser2(int signum)
{
dacă (!este_turn_părinte)
{
printf("\n\nPONG\n\n");
is_parent_turn = 1;
}
altfel
{
somn(2);
}
}