ฉันสร้างโปรแกรมต่อไปนี้ซึ่งจำเป็นต้อง "เล่นปิงปอง" ระหว่างกระบวนการหลักและกระบวนการย่อย
แม้ในขณะที่ทำงาน ในขณะที่คอมไพล์ ฉันสังเกตเห็นว่าพีซีของฉันเริ่มทำงานหนักขึ้นเรื่อย ๆ แต่ฉันก็ไม่ได้คิดว่ามันเป็นปัญหา
ในที่สุดฉันพบว่าตัวเองทำให้ Linux ของฉันพัง สร้างกระบวนการต่างๆ มากมายที่ทำให้พีซีช้าลง และสร้างไฟล์ temp/logs จำนวนมาก และทำให้ดิสก์ของฉันมีพื้นที่ว่าง 200MB แทนที่จะเป็น 35GB
ฉันจะแก้ไขปัญหาเหล่านั้นได้อย่างไร?
- ฉันจะหยุดโปรแกรมไม่ให้สร้างกระบวนการต่างๆ มากมายได้อย่างไร
- ฉันจะล้างไดเร็กทอรีบันทึกของฉันได้อย่างไร ฉันเหนื่อย
sudo apt ลบอัตโนมัติ
และ ทำความสะอาดอัตโนมัติ
และลบทั้งหมด .gz
ไฟล์ใน /var/log
ไดเรกทอรี
แต่มันไม่ได้ช่วย พื้นที่ว่างในดิสก์ของฉันยังคงมีพื้นที่ฟรี 200MB และ a /var/log
ไดเรกทอรีเกือบ 40GB ด้วยเหตุผลบางประการ
ฉันไม่ต้องการลบไฟล์ที่จำเป็นที่อยู่ในไฟล์ /var/log
ไดเร็กทอรี ดังนั้นฉันจะไม่ลบทั้งไดเร็กทอรี
เหตุใดโปรแกรมของฉันจึงสร้างไฟล์ temp หรือไฟล์บันทึกมากมาย
ขอบคุณ.
is_parent_turn = 1;
ถือเป็นโมฆะ handle_siguser1 (เครื่องหมาย int);
ถือเป็นโมฆะ handle_siguser1 (เครื่องหมาย int);
int หลัก ()
{
/* สร้างโปรเซสลูก */
pid_t pid = ส้อม ();
ถ้า (pid < 0)
ทางออก (1);
สัญญาณ (SIGUSR1, handle_siguser1);
สัญญาณ (SIGUSR2, handle_siguser2);
/* กลับสู่กระบวนการลูกที่สร้างขึ้นใหม่ */
ถ้า (0 == pid)
{
ในขณะที่ (1)
{
/* หยุดกระบวนการลูกชั่วคราว และให้พาเรนต์เริ่มต้น */
นอน (2);
ฆ่า (getppid (), SIGUSR2);
}
}
/* ส่งคืนพาเรนต์ */
อื่น
{
ในขณะที่ (1)
{
ฆ่า (getpid (), SIGUSR1);
}
}
กลับ 0;
}
/************************************************ *****************************/
ถือเป็นโมฆะ handle_siguser1 (int signum)
{
ถ้า (is_parent_turn)
{
printf("\n\nปิง\n\n");
is_parent_turn = 0;
}
อื่น
{
นอน (2);
}
}
/************************************************ *****************************/
ถือเป็นโมฆะ handle_siguser2 (int signum)
{
ถ้า (!is_parent_turn)
{
printf("\n\nพงษ์\n\n");
is_parent_turn = 1;
}
อื่น
{
นอน (2);
}
}