Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
asxalex
V2EX  ›  Linux

类似 busybox,不同的软链,执行结果不同,是怎样实现的?

  •  
  •   asxalex · Jul 24, 2019 · 5521 views
    This topic created in 2659 days ago, the information mentioned may be changed or developed.

    如题,在 busybox 中,busybox 命令会被软链到 ls,又被软链到 wc,但是在执行软链 ls 和 wc 的时候,输出(命令的作用)又是不同的,请教一下大佬们,这个咋实现的?

    想在 google 里面搜索的,但是不知道咋表达,也没找到有用的信息。

    14 replies  •  2019-07-25 12:30:11 +08:00
    yangg
    yangg
    Jul 24, 2019❤️1
    1
    bash

    if [ "$(basename $0)" = 'wc' ] then
    0ZXYDDu796nVCFxq
    0ZXYDDu796nVCFxq
    Jul 24, 2019 via Android❤️1
    2
    看 busybox 的代码就知道了
    我猜 busybox 的代码里判断软连的文件名然后执行不同的代码
    asxalex
    asxalex
    OP
    Jul 24, 2019
    3
    @yangg 原来像这样直接写死的啊,谢谢


    @gstqc 谢谢
    podel
    podel
    Jul 24, 2019
    4
    不管是 windows 还是 linux 你命令执行程序的时候, 第一个系统参数 是 你调用的命令的名字。
    应该是通过这个实现的。
    lihongjie0209
    lihongjie0209
    Jul 24, 2019
    5
    busybox 不是软连接吧, 每个程序都是 busybox, 只是名称不同, 默认参数不同.

    skylancer
    skylancer
    Jul 24, 2019
    6
    @lihongjie0209 linux 分区,谢谢茄子
    asxalex
    asxalex
    OP
    Jul 24, 2019
    7
    @podel 嗯,我还以为是写好程序之后,可以动态指定哪个软链执行哪个程序呢,原来是手工写死在程序里的


    @lihongjie0209 软链过去之后,名称不同,但是都没有参数
    asxalex
    asxalex
    OP
    Jul 24, 2019
    9
    @gstqc 我还想一会有空的时候再去看源码呢,多谢~
    Les1ie
    Les1ie
    Jul 24, 2019
    10
    PS:
    iptables ip6tables 也是这样的,实际上是链接到了 xtables-multi
    wweir
    wweir
    Jul 24, 2019 via Android
    11
    os.Args [ 0 ]
    LGA1150
    LGA1150
    Jul 24, 2019
    12
    argv[0]
    muzuiget
    muzuiget
    Jul 25, 2019
    13
    判断命令行第一个参数就是了,好多语言都支持。
    AlynxZhou
    AlynxZhou
    Jul 25, 2019
    14
    学 C 的时候书上没说 argv[0] 是干啥的吗……建议把那本书撕了……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2877 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 13:55 · PVG 21:55 · LAX 05:55 · JFK 08:55
    ♥ Do have faith in what you're doing.