support/shell-container.c: Add builtin kill

No options supported.

Reviewed-by: DJ Delorie <dj@redhat.com>
This commit is contained in:
Adhemerval Zanella 2020-03-24 15:47:13 -03:00
parent 5a5a3a3234
commit 1c17100c43

View File

@ -147,6 +147,25 @@ exit_func (char **argv)
return 0;
}
/* Emulate the "/bin/kill" command. Options are ignored. */
static int
kill_func (char **argv)
{
int signum = SIGTERM;
int i;
for (i = 0; argv[i]; i++)
{
pid_t pid;
if (strcmp (argv[i], "$$") == 0)
pid = getpid ();
else
pid = atoi (argv[i]);
kill (pid, signum);
}
return 0;
}
/* This is a list of all the built-in commands we understand. */
static struct {
const char *name;
@ -156,6 +175,7 @@ static struct {
{ "echo", echo_func },
{ "cp", copy_func },
{ "exit", exit_func },
{ "kill", kill_func },
{ NULL, NULL }
};
@ -264,6 +284,11 @@ run_command_array (char **argv)
if (rv)
exit (rv);
}
else if (WIFSIGNALED (status))
{
int sig = WTERMSIG (status);
raise (sig);
}
else
exit (1);
}