X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=execute.c;h=cbefadfca06456ab7508a0bc17adfa3ac4ef36fe;hp=ccf951a25a437974f681ca0d12763237dfe9839c;hb=fb33a393e21a15ce3b4ac8c16d947fd9b6e77206;hpb=d46de8a1a249e179687361dcaeba27e1c586253a diff --git a/execute.c b/execute.c index ccf951a25..cbefadfca 100644 --- a/execute.c +++ b/execute.c @@ -263,7 +263,6 @@ int exec_spawn(const ExecCommand *command, const ExecContext *context, int *fds, if (pid == 0) { char **e, **f = NULL; int i, r; - char t[16]; sigset_t ss; /* child */ @@ -286,19 +285,24 @@ int exec_spawn(const ExecCommand *command, const ExecContext *context, int *fds, goto fail; } - snprintf(t, sizeof(t), "%i", context->oom_adjust); - char_array_0(t); + if (context->oom_adjust_set) { + char t[16]; - if (write_one_line_file("/proc/self/oom_adj", t) < 0) { - r = EXIT_OOM_ADJUST; - goto fail; - } + snprintf(t, sizeof(t), "%i", context->oom_adjust); + char_array_0(t); - if (setpriority(PRIO_PROCESS, 0, context->nice) < 0) { - r = EXIT_NICE; - goto fail; + if (write_one_line_file("/proc/self/oom_adj", t) < 0) { + r = EXIT_OOM_ADJUST; + goto fail; + } } + if (context->nice_set) + if (setpriority(PRIO_PROCESS, 0, context->nice) < 0) { + r = EXIT_NICE; + goto fail; + } + if (close_fds(fds, n_fds) < 0 || shift_fds(fds, n_fds) < 0 || flags_fds(fds, n_fds) < 0) { @@ -428,13 +432,19 @@ void exec_context_dump(ExecContext *c, FILE* f, const char *prefix) { fprintf(f, "%sUmask: %04o\n" - "%sDirectory: %s\n" - "%sNice: %i\n" - "%sOOMAdjust: %i\n", + "%sDirectory: %s\n", prefix, c->umask, - prefix, c->directory ? c->directory : "/", - prefix, c->nice, - prefix, c->oom_adjust); + prefix, c->directory ? c->directory : "/"); + + if (c->nice_set) + fprintf(f, + "%sNice: %i\n", + prefix, c->nice); + + if (c->oom_adjust_set) + fprintf(f, + "%sOOMAdjust: %i\n", + prefix, c->oom_adjust); } void exec_status_fill(ExecStatus *s, pid_t pid, int code, int status) {