blob: 2d3ad840e6b62daccbe7a6d248ccf2a306516ee6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
static char const msg_usage[] = "Usage: %s <command> [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;
}
|