> ...можно найти man 2 setrlimit который не зависит от оболочки :)
AFAIK setrlimit НЕ позволяет регулировать размер core файла.
Конечно, можно через man 3 ulimit узреть:
For the shell command ulimit, see bash(1).
Только мне показалось, что это не совсем понятно для того, кто не знает,
о чем речь.
IMHO спрашивающего интересовало, что надо сделать, чтобы разрешить/запретить
генерацию core файлов. Это делается через встроенную команду
bash ulimit (для tcsh - limit).
ananas (*) (2003-07-08 17:35:41.201954):
В последних версиях мануалов про setrlimit под Линуксом он (RLIMIT_CORE)
почему-то исчез. У меня в системе такого нет (SuSE Linux 8.1)
Однако я сейчас попробовал - работает!:
#include <sys/resource.h>
#include <unistd.h>
#include <signal.h>
int main() {
struct rlimit rl;
rl.rlim_max = rl.rlim_cur = 10000000;
if (setrlimit(RLIMIT_CORE,&rl)) perror("setrlimit");
raise(11);
return 0;
}
$ulimit -c
0
$./try
Segmentation fault (core dumped)
Все ж, IMHO, вопрос был про ulimit (limit под tcsh)
> #if DEBUG
> rl.rlim_max = rl.rlim_cur = 0;
> if (setrlimit(RLIMIT_CORE,&rl)) perror("setrlimit");
> #endif
Совершенно безсмысленное действие, если твой процесс не оставил после
себя детишек. Лимиты наследуются процессами, но повлиять на лимиты
НЕ своего потомка процесс не может,
Зависит от трех факторов:
1) dumpable флаг (prctl PR_GET_DUMPABLE/PR_SET_DUMPABLE). В частности dumpable по умолчанию сброшен для любого вида setuid/setgid приложений.
2) RLIMIT (упомянутый выше).
3) возможности создать соотв. core file ;)