Estou correndo pdftoppm
para converter um PDF fornecido pelo usuário em uma imagem 300DPI. Isso funciona muito bem, exceto se o usuário fornecer um PDF com um tamanho de página muito grande. pdftoppm
alocará memória suficiente para armazenar uma imagem de 300 DPI desse tamanho na memória, que para uma página quadrada de 100 polegadas é de 100 * 300 * 100 * 300 * 4 bytes por pixel = 3,5 GB. Um usuário mal-intencionado pode me fornecer um PDF bobo e causar todos os tipos de problemas.
Então, o que eu gostaria de fazer é colocar algum tipo de limite rígido no uso da memória para um processo filho que estou prestes a executar - basta interromper o processo se tentar alocar mais do que, digamos, 500 MB de memória. Isso é possível?
Não acho que o ulimit possa ser usado para isso, mas existe um equivalente de um processo?
docker
?