diff options
author | Lennart Poettering <lennart@poettering.net> | 2013-03-11 22:54:36 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2013-03-11 22:54:36 +0100 |
commit | 361514aca147f8826811c23cfac40c6ac995dfeb (patch) | |
tree | 2569d834221d1198d026fec1486f13392aa5e309 /src/bootchart | |
parent | 6d031c0b6037ac7308d31562c09fb8ac714e82b4 (diff) |
bootchart: bump RLIMIT_NOFILE only after we forked us off, so that the init system inherits the kernel default
Diffstat (limited to 'src/bootchart')
-rw-r--r-- | src/bootchart/bootchart.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index a722b2aabf..e608af2e3f 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -90,8 +90,6 @@ double arg_scale_y = 20.0; /* 16px = 1 process bar */ char arg_init_path[PATH_MAX] = "/sbin/init"; char arg_output_path[PATH_MAX] = "/run/log"; -static struct rlimit rlim; - static void signal_handler(int sig) { if (sig++) sig--; @@ -110,6 +108,7 @@ int main(int argc, char *argv[]) { int gind; int i, r; char *init = NULL, *output = NULL; + struct rlimit rlim; const ConfigTableItem items[] = { { "Bootchart", "Samples", config_parse_int, 0, &arg_samples_len }, @@ -125,10 +124,6 @@ int main(int argc, char *argv[]) { { NULL, NULL, NULL, 0, NULL } }; - rlim.rlim_cur = 4096; - rlim.rlim_max = 4096; - (void) setrlimit(RLIMIT_NOFILE, &rlim); - fn = "/etc/systemd/bootchart.conf"; f = fopen(fn, "re"); if (f) { @@ -260,6 +255,10 @@ int main(int argc, char *argv[]) { } argv[0][0] = '@'; + rlim.rlim_cur = 4096; + rlim.rlim_max = 4096; + (void) setrlimit(RLIMIT_NOFILE, &rlim); + /* start with empty ps LL */ ps_first = calloc(1, sizeof(struct ps_struct)); if (!ps_first) { |