lxc-console流程分析

本文介绍LXC命令循环添加函数的实现细节,包括参数解释、路径构造、套接字创建及消息发送与接收流程。重点讲解从lxc_console到触发具体动作的整个过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 },
 };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值