【问题标题】:Existence of file descriptors 0, 1 and 2 for PID 1 on the Linux kernel?Linux内核上PID 1的文件描述符0、1和2是否存在?
【发布时间】:2015-01-28 02:24:49
【问题描述】:

Linux 内核是否总是为引导时使用init=... 或隐式/sbin/init(/etc/init, /bin/init, @ 传递的PID 1 进程提供文件描述符0、1 和2 987654325@)?他们是指系统控制台/dev/console吗?如果 /dev 没有在 init 上提供,但必须由 init 系统设置,会发生什么?

【问题讨论】:

    标签: linux linux-kernel


    【解决方案1】:

    他们被kernel_init_freeable 连接到控制台。控制台直接打开复制,不用经过/dev

        /* Open the /dev/console on the rootfs, this should never fail */
        if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
                pr_err("Warning: unable to open an initial console.\n");
    
        (void) sys_dup(0);
        (void) sys_dup(0);
    

    【讨论】:

    • 您能否包含可追溯到内核版本 2.4 的信息(您的答案中包含的代码从 2.6.34 开始生效 [commit 2bd3a997befc226ab4b504f05c5cbba305f3e0e6 "init: Open /dev/console from rootfs"在主线中])以及早期用户空间(initrd、initramfs 等)的选择如何确定 fds?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 2022-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    相关资源
    最近更新 更多