本帖最后由 yaoming1718 于 2010-12-09 23:30 编辑
本人初学linux 看《linux环境下c编程指南》一书 对书中例子有疑问,向大家请教
代码如下
利用write函数实现一个write_buffer函数,创建文件“test.txt”,从键盘输入字符串写入文件,成功后打开文件为乱码,求解答?
直接用write函数的话,打开test.txt则能看到正常显示。
#include
write函数本来是用来向一个文件句柄(file descriptor)输入内容的,通常的用法是: int fd; fd = open(filename, MODE); write(fd, buf, size); close(fd); 由于linux系统中有三个默认的句柄,即标准输入、标准输出、标准出错,对应标准C中的文件句柄(FILE)是stdin、stdout、stderr,在linux系统中是整数值0,1,2 因此,当我们往1句柄write内容时,就是在标准输出设备上显示内容,比如我们的终端上。 本文来自ChinaUnix博客,如果查...
通过讨论今天终于确定,linux的系统调用write不能实现在文本文件的中间进行添加操作。它可以实现在文件尾部添加,和在文件的中间覆盖的功能。我想只要清楚内核中文件系统原理的人都会很容易理解这一点。:) 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/6889/showart_111731.html
本帖最后由 山丘之王MK 于 2013-06-27 16:09 编辑 最近在写一个驱动,在write设备方法中,将用户空间的数据buf传送到内核空间的data1数组中,发现在应用程中调用write失败,返回-1,也就是根本没执行内核中的write设备方法,而read却是成功的。代码如下: static ssize_t my522_write(struct file *filp, const char __user *buf, size_t size, loff_t *ppos) { unsigned long p = *ppos; unsigned int count = size; in...
本人最近在写linux下的串口编程,是一个有串口的台式机和STM32的单片机板子的串口通信,板子上的串口通信是可行的,因为在window下的串口调试工具测试了,收发数据都是没有问题的,可是在linux下,read函数可以收到板子发来的数据,可是却不能向板子发送数据,板子中的程序是这样的:当收到数据是,做适当的延时后,把收到的数据再发给台式机。 read函数可以收到数据在终端显示,但是write函数将缓冲区的数据发送,返回值是要发的数...
简单的读一个文件: #include #include #include #include int main(int argc,char **argv) { int fd = 0; int pid = 0; char buffer[20] = {'\0'}; char *read_buffer[20] = {'\0'}; //fd = open("/dev/hello",O_RDWR | O_CREAT | O_TRUNC); fd = open("/dev/hello",O_RDONLY ); //| O_NONBLOCK); printf("fd=%d\n",fd); if(fd #include #include #inclu...
open调用成功返回值是不是为0? read(filename,buffer,number),成功调用返回的值是不是读取的字节数number? write(filename,buffer,number),成功调用返回的值是不是写入文件的字节数number?
linux文件设备与I/O:read/write函数 与 阻塞 Block 一,read 函数从打开的设备或文件中读取数据 #include ssize_t read(int fd, void *buf, size_t count); 返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次 read返回0 读上来的数据保存在缓冲区buf 中,同时文件的当前读写位置向后移。注意这个读写位置和使用C标准I/O库时的读写位置有可能不同,这个读写位置是...
一,read 函数从打开的设备或文件中读取数据 #include ssize_t read(int fd, void *buf, size_t count); 返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次 read返回0 读上来的数据保存在缓冲区buf 中,同时文件的当前读写位置向后移。注意这个读写位置和使用C标准I/O库时的读写位置有可能不同,这个读写位置是记在内核中的,而使用C标准I/O库时的读写位置是用户空间I/...
write函数(写入文件) 它的主要功能是:将某个文件缓冲区的数据,写入某个文件内。 系统调用格式: number = write(handle, buffer, n) ; write函数各个参数定义如下: l handle: 这是一个已经打开的文件句柄,表示将数据写入这个文件句柄所表示的文件内。 l buffer: 表示缓冲区,也就是把这个缓冲区的数据写入文件句柄所表示的文件内。 l n: 表示调用一次write操作,应该写如多少字符...