From b8205128fb4512c62b56c768d84b3848260fdb29 Mon Sep 17 00:00:00 2001 From: Wolfgang Draxinger Date: Wed, 11 Apr 2018 15:09:14 +0200 Subject: initial commit --- Makefile | 2 ++ stopped_exec | Bin 0 -> 10848 bytes stopped_exec.c | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 Makefile create mode 100755 stopped_exec create mode 100644 stopped_exec.c diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..69e152a --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +stopped_exec: stopped_exec.c + $(CC) -o stopped_exec stopped_exec.c diff --git a/stopped_exec b/stopped_exec new file mode 100755 index 0000000..b203be5 Binary files /dev/null and b/stopped_exec differ diff --git a/stopped_exec.c b/stopped_exec.c new file mode 100644 index 0000000..2d3ad84 --- /dev/null +++ b/stopped_exec.c @@ -0,0 +1,36 @@ +#include +#include +#include +#include +#include +#include + +static char const msg_usage[] = "Usage: %s [args]\nExecutes a program in stopped state.\n"; + +static +int usage(char const* cmd) +{ + fprintf(stderr, msg_usage, cmd); + return 1; +} + +int main(int argc, char *argv[]) +{ + if( 2 > argc ){ + return usage(argv[0]); + } + pid_t const fork_rc = fork(); + if( 0 == fork_rc ){ + setsid(); + kill( 0, SIGSTOP ); + execvp(argv[1], argv+1); + perror("execvp"); + return 2; + } + if( 0 > fork_rc ){ + perror("fork"); + return 3; + } + fprintf(stderr, "%ld\n", (long)fork_rc); + return 0; +} -- cgit v1.2.3