From 53e1f461f9a86a4c979b2bd719b8ccd1b608980e Mon Sep 17 00:00:00 2001 From: Bernhard Voelker Date: Wed, 16 Nov 2011 17:57:27 +0100 Subject: prlimit: add support for executing a command prlimit.c: Alternatively to applying the limits to an existing process via the --pid option, allow a command to be executed. Adapted usage() accordingly. prlimit.1: mention new syntax. Signed-off-by: Bernhard Voelker --- sys-utils/prlimit.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'sys-utils/prlimit.c') diff --git a/sys-utils/prlimit.c b/sys-utils/prlimit.c index bcbfb5a8f..846695b5a 100644 --- a/sys-utils/prlimit.c +++ b/sys-utils/prlimit.c @@ -152,7 +152,9 @@ static void __attribute__ ((__noreturn__)) usage(FILE * out) fputs(USAGE_HEADER, out); fprintf(out, - _(" %s [options]\n"), program_invocation_short_name); + _(" %s [options] [-p PID]\n"), program_invocation_short_name); + fprintf(out, + _(" %s [options] COMMAND\n"), program_invocation_short_name); fputs(_("\nGeneral Options:\n"), out); fputs(_(" -p, --pid process id\n" @@ -521,7 +523,7 @@ int main(int argc, char **argv) assert(MAX_RESOURCES == STACK + 1); while((opt = getopt_long(argc, argv, - "c::d::e::f::i::l::m::n::q::r::s::t::u::v::x::y::p:o:vVh", + "+c::d::e::f::i::l::m::n::q::r::s::t::u::v::x::y::p:o:vVh", longopts, NULL)) != -1) { switch(opt) { case 'c': @@ -608,8 +610,9 @@ int main(int argc, char **argv) break; } } - if (argc > optind) - usage(stderr); + if (argc > optind && pid) + errx(EXIT_FAILURE, + _("--pid option and COMMAND are mutually exclusive")); if (!ncolumns) { /* default columns */ @@ -633,5 +636,11 @@ int main(int argc, char **argv) if (!list_empty(&lims)) show_limits(&lims, tt_flags); + if (argc > optind) { + /* prlimit [options] COMMAND */ + execvp(argv[optind], &argv[optind]); + err(EXIT_FAILURE, _("executing %s failed"), argv[optind]); + } + return EXIT_SUCCESS; } -- cgit v1.2.3-55-g7522