Acho que a confusão vem do fato de que a chamada de sistema subjacente que ulimit envolve é chamada de setrlimit .
trecho da página man do ulimit
The ulimit() function shall control process limits. The process limits that can be controlled by this function include the maximum size of a single file that can be written (this is equivalent to using setrlimit() with RLIMIT_FSIZE).
Além disso, se você olhar a página setrlimit
man, a estrutura de dados subjacente que contém as informações de limite é chamada rlimit
.
trecho da página do manual setrlimit
getrlimit and setrlimit get and set resource limits respectively. Each resource has an associated soft and hard limit, as defined by the rlimit structure (the rlim argument to both getrlimit() and setrlimit()):
struct rlimit { rlim_t rlim_cur; /* Soft limit */ rlim_t rlim_max; /* Hard limit (ceiling for rlim_cur) */ };