tôi đang cố gắng hạn chế việc sử dụng bộ nhớ của một quá trình bằng cách sử dụng ulimit
ulimit -Sv 100000
ulimit -St 10
fakechroot ./compiledfile
Tôi đang chạy lệnh trong cùng một thiết bị đầu cuối (tôi đang sử dụng Ubuntu 16.04) và mã nguồn của tệp được biên dịch là
#include<stdio.h>
int main()
{
while(1)
{
malloc(110000000);
pf("allocated : %d\n",i);
}
return 0;
}
quá trình sẽ bị chấm dứt do giới hạn bộ nhớ..nhưng nó đang chạy cho đến khi kết thúc thời gian kết thúc. Tôi không hiểu tại sao. Tôi là người mới, tha thứ cho tôi nếu câu hỏi thật ngớ ngẩn..những trợ giúp hoặc đề nghị được đánh giá cao..cảm ơn
@joe P tôi đã thử mà không có fakechroot (./compiledfile) bt không thay đổi
—
mursalin
Bạn nên kiểm tra giá trị trả lại của
—
x22
malloc
. Nó sẽ trở lại NULL
khi cấp phát không thành công do giới hạn bộ nhớ hoặc lý do khác.
fakechroot
tạo ra một quy trình mới?ulimit
chỉ ảnh hưởng đến quá trình hiện tại. Bạn có thể thử chạy một kịch bản vớiulimit
và./compiledfile
bên trong của bạnfakechroot