按照书上写 了一个程序结果是正确的,但有的地方看不懂,请大虾指教 了谢谢阿 :)
以下是程序,看不懂为什么从hello1文件读出一次内容后他的文件描述符fds[0]就变为0
了 ,而向hello2文件里写一次以后他的文件描述符就不变阿。这个程序完成的功能是每
隔10s中就向hello2文件写一次数据。
#include
by
destinyliu
-
程序开发
-
2006-12-21 13:25:47 阅读(1305) 回复(5)
改变read,write,readdir,open,release等函数指针,发现readdir可以正常获得目录名,open,release只能截获目录的操作, read,write完全截获不了任何操作。 请问各位大虾有遇到类似问题吗。现在感觉上是对目录的操作都能截获,但是对文件操作的就完全没有。 readdir(工作正常) 和 read 代码如下 int my_readdir(struct file *fp, void *buf, filldir_t filldir) { char *path = (char*)kmalloc(MAX_DIR_LENTH); ...
在写设备驱动时常要用到下面两个函数: static ssize_t device_read(struct file *, char *, size_t, loff_t *); static ssize_t device_write(struct file *, const char *, size_t, loff_t *); 当用户空间的程序调用read(fd, buf, count)或write(fd, buf, count)时,实际上就会调用内核中的device_read和device_write函数。 我有一点不明白,内核中的读写函数都有一个位移参数loff_t *,而用户态的读写函数确没有,岂不是很...
如题,返回成功不代表已经发送完毕,有没有函数可以判断?有没有write函数可以使发送缓冲区中的数据已经发送完毕后再返回.
嵌入式linux平台下的GPS数据采集涉及到linux串口编程技术,从串口读取GPS信息需要用到read函数, read函数的定义如下: ssize_t read(int filedes, void *buf, size_t nbytes); 我想问两个问题: 1、这里的参数buf是什么类型的?是char型的吗? 2、当从串口接收到信息并保存到buf中时,我想看buf中保存的信息的第一个字符是不是%,请问 可不可以用if(buf[0]=='%')进行判断?
把write换成mkdir就一切正常,且mkdir就成了空操作
源码:
#ifndef MODULE
#define MODULE
#endif
#ifndef __KERNEL__
#define __KERNEL__
#endif
#include <linux/module.h>
#include <linux/kernel.h>
#include
char buf[100]; ... read(fp,buf,sizeof(buf)); printf("%s\n",buf); ---------------------------------------------- printf("%s\n",buf);为什么可以运行。 buf的最后一个字节不是'\0'啊。
我看一本书上说write一个128字节的数据,调用read时,可能第一次接受10字节,第二次接收100字节,第三次接受18字节。所以必须重复的调用read。 但服务端write("hello"); 后, 如果用 while((n=read(buf))>0) { printf(buf); } 接收完服务端发过来的数据后,read就会由于没有数据到来而阻塞,就不能往下继续执行了。 怎么才能让read接受完write传过来的数据后就跳出while?