Tôi tạo chương trình sau cần "chơi bóng bàn" giữa quy trình cha và quy trình con của nó.
Ngay cả khi đang làm việc với nó, trong khi biên dịch, tôi nhận thấy rằng PC của tôi bắt đầu hoạt động ngày càng nhiều hơn nhưng tôi không thực sự nghĩ đó là một vấn đề.
Cuối cùng, tôi thấy mình làm hỏng Linux của mình, tạo ra nhiều quy trình khác nhau làm chậm PC, đồng thời tạo ra nhiều tệp tạm thời/nhật ký và khiến đĩa của tôi chỉ còn 200 MB dung lượng trống thay vì 35 GB.
Làm thế nào tôi có thể khắc phục những vấn đề đó?
- Làm cách nào tôi có thể ngăn chương trình của mình tạo ra nhiều quy trình khác nhau?
- Làm cách nào để dọn sạch thư mục nhật ký của tôi? tôi đã thử
sudo apt autoremove
và tự động làm sạch
và xóa tất cả .gz
tập tin trong /var/log
danh mục.
Nhưng nó không giúp được gì. Dung lượng đĩa của tôi vẫn ở mức 200 MB miễn phí và /var/log
thư mục gần 40GB vì một số lý do.
Tôi không muốn xóa các tệp cần thiết nằm trong /var/log
vì vậy tôi không xóa toàn bộ thư mục.
Tại sao chương trình của tôi thậm chí đã tạo ra rất nhiều tệp tạm thời hoặc tệp nhật ký?
Cảm ơn.
is_parent_turn = 1;
void handle_siguser1(int signum);
void handle_siguser1(int signum);
int chính ()
{
/* tạo tiến trình con */
pid_t pid = fork();
nếu (pid < 0)
thoát(1);
tín hiệu(SIGUSR1, handle_siguser1);
tín hiệu(SIGUSR2, handle_siguser2);
/* trả về tiến trình con mới tạo. */
nếu (0 == pid)
{
trong khi (1)
{
/* tạm dừng tiến trình con và để tiến trình cha bắt đầu */
ngủ(2);
giết (getppid(), SIGUSR2);
}
}
/* trả về cha */
khác
{
trong khi (1)
{
giết (getpid(), SIGUSR1);
}
}
trả về 0;
}
/*************************************************** *******************************/
void handle_siguser1(int signum)
{
nếu (is_parent_turn)
{
printf("\n\nPING\n\n");
is_parent_turn = 0;
}
khác
{
ngủ(2);
}
}
/*************************************************** *******************************/
void handle_siguser2(int signum)
{
nếu (!is_parent_turn)
{
printf("\n\nPONG\n\n");
is_parent_turn = 1;
}
khác
{
ngủ(2);
}
}