Seu exemplo deve funcionar como você pensa (o programa é morto depois de consumir muita RAM). Acabei de fazer um pequeno teste no meu servidor de shell:
Primeiramente, eu limitei meus limites a serem REALMENTE baixos:
ulimit -m 10
ulimit -v 10
Isso leva a que tudo seja morto. ls
, date
e outros pequenos comandos serão gravados antes mesmo de começarem.
Qual distribuição Linux você usa? Seu programa usa apenas um único processo ou gera muitos processos filhos? Neste último caso, ulimit pode nem sempre ser eficaz.