Nack - the library should not handle signals for callers.

Instead, there should be an interface through which the caller
can ask the library to destroy the tree that it just created.
Thus it will be the caller who catches the signal and acts on
it.

Oren.

Sukadev Bhattiprolu wrote:
> From: Sukadev Bhattiprolu <[email protected]>
> Date: Thu, 4 Mar 2010 17:37:39 -0800
> Subject: [PATCH 02/12][user-cr] restart: Add args->send_sigint
> 
> restart command supports a command line option, --send-sigint to let
> user specify whether SIGINT signal should be processed/ignored during
> restart. Make this a field in 'struct app_restart_args' so that other
> callers of app_restart() in the future can also control the SIGINT
> behavior.
> 
> Signed-off-by: Sukadev Bhattiprolu <[email protected]>
> ---
>  restart.c |    6 +++++-
>  1 files changed, 5 insertions(+), 1 deletions(-)
> 
> diff --git a/restart.c b/restart.c
> index 0c74bb6..314390c 100644
> --- a/restart.c
> +++ b/restart.c
> @@ -376,6 +376,7 @@ struct app_restart_args {
>       int pids;
>       int pidns;
>       int inspect;
> +     int send_sigint;
>       char *root;
>       int wait;
>       int mntns;
> @@ -497,6 +498,7 @@ static void parse_args(struct app_restart_args *args, int 
> argc, char *argv[])
>       args->klogfd = -1;
>       args->warn = CKPT_COND_WARN;
>       args->fail = CKPT_COND_FAIL;
> +     args->send_sigint = -1;
>       no_pidns = 0;
>  
>       klogfile = NULL;
> @@ -554,7 +556,7 @@ static void parse_args(struct app_restart_args *args, int 
> argc, char *argv[])
>                               ckpt_err("restart: invalid signal\n");
>                               exit(1);
>                       }
> -                     global_send_sigint = sig;
> +                     args->send_sigint = sig;
>                       break;
>               case 3:  /* --pids */
>                       args->pids = 1;
> @@ -815,6 +817,8 @@ int app_restart(struct app_restart_args *args)
>       memset(&ctx, 0, sizeof(ctx));
>       ctx.args = args;
>  
> +     global_send_sigint = args->send_sigint;
> +
>       /* input file descriptor (default: stdin) */
>       if (args->infd >= 0) {
>               if (dup2(args->infd, STDIN_FILENO) < 0) {
_______________________________________________
Containers mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/containers

_______________________________________________
Devel mailing list
[email protected]
https://openvz.org/mailman/listinfo/devel

Reply via email to