C 文件数据在设备文件中的位置?

C 文件数据在设备文件中的位置?,c,linux-kernel,driver,C,Linux Kernel,Driver,我正在编写一个字符设备文件,想知道是否有任何方法可以为设备文件的每个实例提供一段数据。我一直在研究inode和文件结构,寻找一个存储非易失性指针的位置,但没有找到运气。你能用字符设备文件做到这一点吗,或者我应该考虑其他事情吗?我需要对每个文件实例的数据进行自定义读写操作。您不能将数据存储在设备文件中。设备文件的全部要点是,您向其写入的数据被传递给某个驱动程序 理论上,您可以将信息存储在文件名或inode的groupid字段中,但这会非常奇怪 最好的解决方案是将数据单独存储。例如,为什么不在设备文

我正在编写一个字符设备文件,想知道是否有任何方法可以为设备文件的每个实例提供一段数据。我一直在研究inode和文件结构,寻找一个存储非易失性指针的位置,但没有找到运气。你能用字符设备文件做到这一点吗,或者我应该考虑其他事情吗?我需要对每个文件实例的数据进行自定义读写操作。

您不能将数据存储在设备文件中。设备文件的全部要点是,您向其写入的数据被传递给某个驱动程序

理论上,您可以将信息存储在文件名或inode的groupid字段中,但这会非常奇怪


最好的解决方案是将数据单独存储。例如,为什么不在设备文件旁边创建一个常规文件?也许可以使用一些命名约定将两者关联起来。

好的,我很确定它会进入inode结构。有人知道,模糊地说,如何实现这个吗?你的问题不清楚:“我在写一个字符设备文件”-你是在创建一个设备文件,还是在写它?“为设备文件的每个实例拥有一段数据的任何方法”-什么是设备文件的“实例”?你说的“数据部分”是什么意思???为什么要将数据存储在设备文件中?为什么不使用一个常规文件(毕竟这就是它们的用途)。我正在创建一个设备文件。例如,我指的是mknod制作的设备文件的副本。我所说的数据段是指与文件相关联的任意数据段,就像任何文本文件中的内容一样。您能详细说明您的问题吗?您正在创建哪些设备文件?您需要存储哪些数据?你为什么不把它存储在一个常规文件中?“一个存储非易失性指针的地方”--如果你已经打开了设备,并且驱动程序已经在设备结构中为它分配了空间,那么应用程序可以让驱动程序使用
ioctl()
调用来存储这个指针。但是当设备关闭时,您会丢失这些数据。谢谢您为我清理这些数据。我想我可以将数据存储在一个单独的文件中,这只会让代码更麻烦。