c - 使用 procfs 的内核用户输出在哪里?

标签 c linux linux-kernel proc procfs

ssize_t dev_read(struct file *filp,char *buf,size_t count,loff_t *offset)
{
    int len = count >= strlen(chr_arr.array) ? strlen(chr_arr.array) : count;
    *offset += len;

    if (*offset >= strlen(chr_arr.array))
        return 0;

    if (copy_to_user(buf,chr_arr.array,len))
        return -EFAULT;

    return len;
}

我想从内核读取一个值并在用户应用程序中使用它,所以我使用 procfs api 从内核读取并在用户空间中使用它。

上面是从内核中读取数据并将其存储在用户缓冲区(buf)中的读取函数。但是,如果我想从用户应用程序读取输出,那么从存储在用户空间中的内核中读取的值将从哪里读取?有人可以帮助我吗??

最佳答案

如果该值在 procfs 中公开,您的用户应用程序只需将 procfs 节点作为文件打开并像读取任何其他文件一样读取它。花哨的东西都在内核中完成。

如果您正在尝试编写一个向 procfs 公开某些内容的内核组件,那么您将需要类似于您引用的代码来处理对 procfs 节点的 read() 调用。

关于c - 使用 procfs 的内核用户输出在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23179587/

相关文章:

c - 如何在c中处理tcpdump输出

c - 等待用户空间中可能完成?

php - 为vtiger创建自定义短信提供商

memory-management - 我如何知道linux进程的页面缓存大小

c++ - 带有 TCSADRAIN 标志的 tcsetattr() 阻塞时间很奇怪

c - libpq 只在字符串列中插入第一个字符

linux - 我应该选择什么 : GTK+ or Qt?

linux - 在 Linux 桌面环境中为每个应用程序分配键盘快捷方式

linux - 强制内核中的进程休眠 60 秒

linux - 当CPU中运行的进程离线时会发生什么