Puncte:0

Programul C a creat multe procese, a blocat sistemul de operare și a introdus 40 GB în directorul de jurnal

drapel pl

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?

  1. Cum pot opri programul meu să creeze o mulțime de procese diferite?
  2. 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);
    }
}

introduceți descrierea imaginii aici

introduceți descrierea imaginii aici

drapel in
Poate doriți să puneți această întrebare pe StackOverflow, care este un site centrat pe dezvoltare
NoobCoder avatar
drapel pl
@matigo întrebarea majoră aici este „cum ar trebui să curăț directorul `var/log` și să elimin toate fișierele care au fost create de programul meu și să ocupe mai mult de 35 GB fără a elimina fișierele de sistem cu adevărat importante
drapel in
Puteți folosi terminalul sau Nautilus să intrați în directorul `/var/log/` și, de acolo, să ștergeți fișierele mari. Atâta timp cât nu eliminați directoare sau nu schimbați permisiunile, veți fi bine...
NoobCoder avatar
drapel pl
fișierul numit `syslog` are 22 GB
Doug Smythies avatar
drapel gn
și care sunt unele dintre intrările din `/var/log/syslog`? Intrările ar trebui să vă ajute să vă depanați programul.
Doug Smythies avatar
drapel gn
Programul dvs. c pare incomplet și nu se compila așa cum este listat. L-am făcut să fie compilat și nu face nicio intrare în `/var/log/syslog`, dar nu se termină pentru totdeauna sau nu se termină. Se imprimă „PING”, apoi „PONG” o dată. Ar trebui să-ți omori lucrurile `killall a.out`

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.