linux 内核模块怎么调用应用层命令

需要在内核的驱动模块代码里面获取网卡是否up状态,了解到在/sys/class/net/目录下可以查询到网卡状态,但是没有记录网卡up状态的文件。
目前想到的办法,就是通过调用ifconfig来获取网卡信息,在内核可以通过call_usermodehelper函数执行命令,但是不知道怎么将执行的输出结果获取回来,目前只会输出到文件,但是这样可能会增加文件系统的压力。有没有办法直接输出到代码里面的Buf?

目前只会将结果输出到文件,怎么输出到buf呢

static int check_eth(void)
{
    int ret      = -1;
    char path[]  = "/bin/bash";
    char *argv[] = {path, "-c", "ifconfig", ">", "/root/output.txt", NULL};
    char *envp[] = {NULL};
    
    printk("call_usermodehelper module isstarting..!\n");
    
    ret = call_usermodehelper(path, argv, envp, UMH_WAIT_PROC);
    
    printk("test_init ret=%d\n", ret);
    return 0;
}

这里有个示例:https://gitee.com/weidongshan/lv_100ask_linux_desktop/blob/master/lv_100ask_app/src/imx6ull_app/imx6ull_set_lan/src/set_lan.c#L140

这个是应用层app,内核层貌似用不了

使用 sysfs 的方式?将 ifconfig 的结果重定向到 某个 /sys/xxx/xxx 文件中?
涉及的接口有:

DEVICE_ATTR
sysfs_create_file
sysfs_remove_file