2011-11-15 7 views
11

Sé que puedo correr "ulimit -c unlimited"Encienda núcleo/volcados programáticamente

En el shell para activar el núcleo de vertederos para el usuario actual. Lo que me pregunto es ¿cómo puedo hacer esto programáticamente desde C?

Veo que hay una llamada ulimit, pero ha quedado en desuso en favor de get/setrlimit. Lo que quiero saber es ¿cuál es la llamada equivalente a setrlimit que permitiría generar volcados de datos ?

+4

'setrlimit (RLIMIT_CORE, ...' – osgx

+0

Doh, confía en mí para leer a través de la página del manual demasiado rápido RLIMIT_CORE es lo que yo quería aplausos... – Matt

Respuesta

17

Encontré una solución de trabajo. Los archivos centrales ahora están siendo creados.

struct rlimit core_limit; 
core_limit.rlim_cur = RLIM_INFINITY; 
core_limit.rlim_max = RLIM_INFINITY; 

if (setrlimit(RLIMIT_CORE, &core_limit) < 0) 
    fprintf(stderr, "setrlimit: %s\nWarning: core dumps may be truncated or non-existant\n", strerror(errno)); 

crédito va aquí: http://adamrosenfield.com/blog/2010/04/23/dumping-core/