[CRIU] [PATCH] criu: Add exec-cmd option.
Andrew Vagin
avagin at parallels.com
Wed Mar 19 13:29:47 PDT 2014
On Wed, Mar 19, 2014 at 07:39:24PM +0200, Deyan Doychev wrote:
> From: Deyan Doychev <deyandoichev at gmail.com>
>
> The --exec-cmd option specifies a command that will be execve()-ed on successful
> restore. This way the command specified here will become the parent process of
> the restored process tree.
>
> When this option is specified criu will fork to become a daemon before it starts
> restoring the processes. It also implies the -d option so waiting for the
> restored processes to finish is responsibility of the command specified here.
>
> This option will be used when restoring LinuX Containers.
>
> Signed-off-by: Deyan Doychev <deyandoichev at gmail.com>
> ---
...
> diff --git a/crtools.c b/crtools.c
> index 047ac53..5591225 100644
> --- a/crtools.c
> +++ b/crtools.c
> @@ -77,6 +77,23 @@ bad_ns:
> return -1;
> }
>
> +char **parse_exec_cmd(char *optarg)
> +{
I don't like this function. Can we use '--' to split criu options and an
exec command
./criu restore .... --exec-cmd -- lxc-start --attach -n CTNAME --smth-else
For me it looks better. What do you think about this?
Thanks.
> + int i;
> + int count = 1;
> + char **res;
> +
> + for (i = strlen(optarg); i >= 0; i--)
> + if (strchr(" \t\r\n", optarg[i]))
> + count++;
> +
> + res = xmalloc(count * sizeof(char *));
> + res[0] = strtok(optarg, " \t\r\n");
> + for (i = 1; (res[i] = strtok(NULL, " \t\r\n")); i++);
> +
> + return res;
> +}
> +
> static int parse_cpu_cap(struct cr_options *opts, const char *optarg)
> {
> bool inverse = false;
More information about the CRIU
mailing list