2011-11-15 31 views
11

Tôi biết tôi có thể chạy "ulimit -c không giới hạn"Bật lõi/bãi sụp đổ programatically

Trong vỏ bật lõi bãi cho người dùng hiện. Những gì tôi tự hỏi là làm thế nào tôi có thể làm điều này programatically từ C?

Tôi thấy có một cuộc gọi ulimit, nhưng nó không được chấp nhận có lợi cho get/setrlimit. Những gì tôi muốn biết là cuộc gọi tương đương với setrlimit sẽ cho phép các bãi đổ vỡ được tạo ra như thế nào?

+4

'setrlimit (RLIMIT_CORE, ... ' – osgx

+0

Doh, hãy tin tôi đọc qua các trang người đàn ông quá nhanh RLIMIT_CORE là những gì tôi đã muốn cổ vũ... – Matt

Trả lời

17

Tôi đã tìm được giải pháp làm việc. Các tệp lõi hiện đang được tạo.

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)); 

Credit goes here: http://adamrosenfield.com/blog/2010/04/23/dumping-core/

Các vấn đề liên quan