当前位置: 技术问答>linux和unix
我写了一个虚拟命名管道(FIFO)的字符设备,如何使用呢?
来源: 互联网 发布时间:2015-08-02
本文导语: 设备源文件是 vfifo.c 主要函数是 static int __init vfifo_init_module(void) static void __exit vfifo_cleanup_module(void) static int vfifo_open(struct inode *inode, struct file *filp) static int vfifo_release(struct inode *inode, struct file *filp) static...
设备源文件是 vfifo.c
主要函数是
static int __init vfifo_init_module(void)
static void __exit vfifo_cleanup_module(void)
static int vfifo_open(struct inode *inode, struct file *filp)
static int vfifo_release(struct inode *inode, struct file *filp)
static ssize_t vfifo_read(struct file *filp, char *buf, size_t count, loff_t *f_pos)
static ssize_t vfifo_write(struct file *filp, const char *buf, size_t count, loff_t *f_pos)
insmod vfifo.o
mknod vfifo0 c 241 0
mknod vfifo1 c 241 1
mknod vfifo2 c 241 2
mknod vfifo3 c 241 3
mknod vfifo4 c 241 4
mknod vfifo5 c 241 5
mknod vfifo6 c 241 6
mknod vfifo7 c 241 7
一共实现了4个管道,每个管道对应2个设备, 次设备号是偶数的设备是只写设备,次设备号是奇数的是只读设备。写入设备i(i是偶数)的字符可以从设备i+1读出。
管道大小4000, 请问怎样写测试程序呢? 还有怎样能不能在命令行下测试呢?
主要函数是
static int __init vfifo_init_module(void)
static void __exit vfifo_cleanup_module(void)
static int vfifo_open(struct inode *inode, struct file *filp)
static int vfifo_release(struct inode *inode, struct file *filp)
static ssize_t vfifo_read(struct file *filp, char *buf, size_t count, loff_t *f_pos)
static ssize_t vfifo_write(struct file *filp, const char *buf, size_t count, loff_t *f_pos)
insmod vfifo.o
mknod vfifo0 c 241 0
mknod vfifo1 c 241 1
mknod vfifo2 c 241 2
mknod vfifo3 c 241 3
mknod vfifo4 c 241 4
mknod vfifo5 c 241 5
mknod vfifo6 c 241 6
mknod vfifo7 c 241 7
一共实现了4个管道,每个管道对应2个设备, 次设备号是偶数的设备是只写设备,次设备号是奇数的是只读设备。写入设备i(i是偶数)的字符可以从设备i+1读出。
管道大小4000, 请问怎样写测试程序呢? 还有怎样能不能在命令行下测试呢?
|
一个进程读,一个进程写。
# cat > vfifo3
# tail -f vfifo3
# cat > vfifo3
# tail -f vfifo3