lxc调用init流程

src\lxc\lxc_start.c
int main(int argc, char *argv[])
{
 int err = -1;
 struct lxc_conf *conf;
 char *const *args;
 char *rcfile = NULL;
 char *const default_args[] = {
  "/sbin/init",
  '\0',
 };
default_args[0] = "/sbin/init"

 if (!my_args.argc)
  args = default_args;

args[0] = "/sbin/init"
 err = lxc_start(my_args.name, args, conf, my_args.lxcpath);

int lxc_start(const char *name, char *const argv[], struct lxc_conf *conf,
       const char *lxcpath)
{   argv[0] = "/sbin/init"
    start_arg.argv[0] = "/sbin/init"
 struct start_args start_arg = {
  .argv = argv,
 };

 if (lxc_check_inherited(conf, -1))
  return -1;

 conf->need_utmp_watch = 1;
 return __lxc_start(name, conf, &start_ops, &start_arg, lxcpath);
}

int __lxc_start(const char *name, struct lxc_conf *conf,
  struct lxc_operations* ops, void *data, const char *lxcpath)
{
 handler->data = data;
 err = lxc_spawn(handler);

data ->argv[0] = "/sbin/init"

handler->data ->argv[0] = "/sbin/init"

int lxc_spawn(struct lxc_handler *handler)
{
 handler->pid = lxc_clone(do_start, handler, handler->clone_flags);

pid_t lxc_clone(int (*fn)(void *), void *arg, int flags)
{
 struct clone_arg clone_arg = {
  .fn = fn,
  .arg = arg,
 };
clone_arg.arg-> data ->argv[0] = "/sbin/init"
        .fn = do_start

 ret = clone(do_clone, stack  + stack_size, flags | SIGCHLD, &clone_arg);

static int do_clone(void *arg)
{
 struct clone_arg *clone_arg = arg;
 return clone_arg->fn(clone_arg->arg);
    do_start(arg);  arg-> data ->argv[0] = "/sbin/init"
}

static int do_start(void *data)  data -> data ->argv[0] = "/sbin/init"
{
 struct lxc_handler *handler = data;  handler -> data ->argv[0] = "/sbin/init"
 /* after this call, we are in error because this
  * ops should not return as it execs */
 handler->ops->start(handler, handler->data);


static int execute_start(struct lxc_handler *handler, void* data) data ->argv[0] = "/sbin/init"
{
 int j, i = 0;
 struct execute_args *my_args = data;  my_args ->argv[0] = "/sbin/init"

 execvp(argv[0], argv);

猜你喜欢

转载自blog.csdn.net/tdaajames/article/details/8961287