lxc-console流程分析

extern int lxc_command_mainloop_add(const char *name,
        struct lxc_epoll_descr *descr,
        struct lxc_handler *handler)
{
 int ret, fd;
 char path[sizeof(((struct sockaddr_un *)0)->sun_path)] = { 0 };
 char *offset = &path[1];

 sprintf(offset, abstractname, name);

 fd = lxc_af_unix_open(path, SOCK_STREAM, 0);
抽象名是/usr/local/var/lib/lxc/vp1/command——socket名,是在外面的。

lxc_console  ->lxc_command_connected  ->__lxc_command  ->lxc_af_unix_send_credential -> sendmsg
——lxc_console发消息

__lxc_start ->lxc_poll ->lxc_command_mainloop_add ->incoming_command_handler ->accept
——接收信息

incoming_command_handler ->command_handler ->lxc_af_unix_rcv_credential ->recvmsg
——取出消息

command_handler ->trigger_command
——根据消息触发相应动作lxc_console_callback

extern int lxc_console(const char *name, int ttynum, int *fd)
{
 int ret, stopped = 0;
 struct lxc_command command = {
  .request = { .type = LXC_COMMAND_TTY, .data = ttynum },
 };

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值