获取写入自定义 /dev/ 文件的字符串
Get Character String Written to Custom /dev/ file
我目前正在使用我安装的自定义设备驱动程序。我对此很陌生,无法理解如何从命令行获取我写入的数据。
比如我这样往文件中写入数据:
echo -n "test" > /dev/custom
然后我只想得到这里的字符串,所以我可以使用里面的字符:
static ssize_t custom_write (struct file *f, const char *buf, size_t len, loff_t *offset)
{
printk(KERN_ALERT "Test\n");
return len;
}
字符串在buf
中,但在用户内存中。您需要使用 copy_from_user()
复制到内核内存。
static ssize_t custom_write (struct file *f, const char *buf, size_t len, loff_t *offset)
{
char custom_buffer[MAX_BUFFER_SIZE];
size_t custom_buffer_size = len;
if (custom_buffer_size > MAX_BUFFER_SIZE) {
custom_buffer_size = MAX_BUFFER_SIZE;
}
if (copy_from_user(custom_buffer, buf, custom_buffer_size) != 0) {
return -EFAULT;
}
printk(KERN_ALERT "Test %.*s\n", (int)custom_buffer_size, custom_buffer);
return custom_buffer_size;
}
我目前正在使用我安装的自定义设备驱动程序。我对此很陌生,无法理解如何从命令行获取我写入的数据。
比如我这样往文件中写入数据:
echo -n "test" > /dev/custom
然后我只想得到这里的字符串,所以我可以使用里面的字符:
static ssize_t custom_write (struct file *f, const char *buf, size_t len, loff_t *offset)
{
printk(KERN_ALERT "Test\n");
return len;
}
字符串在buf
中,但在用户内存中。您需要使用 copy_from_user()
复制到内核内存。
static ssize_t custom_write (struct file *f, const char *buf, size_t len, loff_t *offset)
{
char custom_buffer[MAX_BUFFER_SIZE];
size_t custom_buffer_size = len;
if (custom_buffer_size > MAX_BUFFER_SIZE) {
custom_buffer_size = MAX_BUFFER_SIZE;
}
if (copy_from_user(custom_buffer, buf, custom_buffer_size) != 0) {
return -EFAULT;
}
printk(KERN_ALERT "Test %.*s\n", (int)custom_buffer_size, custom_buffer);
return custom_buffer_size;
}