Unix环境写入文件时,要注意的一个小细节,要不任何情况都有可能发生。在Unix/Linux环境下,写入文件时。如果,在open函数的读写模式,只提供了,读写、如果不存在生成,这些模式时。如果源文件存在,以非追加的方式写入数据时,当后续的数据长度大于源文件已有的数据时,后续的文件覆盖以前的数据。如果后续的数据长度小于源文件以后的数据长度时,只是覆盖了后续写入的数据长度。这时,文件的数据时,两者的混合,这不是我们想要的。所以为了数据的正确性,在以非追加(append)方式吸入数据时,首先要清空,要写入的文件。以下为一个例子:
- #include<stdio.h>
- #include<stdlib.h>
- #include<fcntl.h>
- int main(int argc ,char * argv[])
- {
- int val = 0;
- int fd = 0;
- char* fpath = "./test.txt";
- char buffer[] = "Hi i am harry.";
- char buffer1 []= "liyachao.";
- /*open the file with write/read and create module*/
- fd = open(fpath,O_RDWR|O_CREAT);
- /*truncate the exiting file"s size to zero,meanning empty the exit file.*/
- ftruncate(fd,0);
- val = write(fd,buffer,strlen(buffer));
- printf("wirte %d bytes.",val);
-
- return 0;
- }
Unix环境产生单实例进程方案Linux操作系统--联机信息发送相关资讯 UNIX
- 一个涵盖 Unix 44 年进化史的版本 (12/23/2015 19:08:29)
- 2002年,程序员和Unix大神们的桌面 (11/10/2015 08:18:44)
- 20个 Unix/Linux 命令技巧 (03/22/2015 08:09:34)
| - UNIX 家族小史 (12/01/2015 12:03:06)
- 从Unix 和 PC机:重释Linux的起源 (05/17/2015 21:13:04)
- 什么是Unix以及它为什么这么重要? (07/23/2014 16:47:39)
|
本文评论 查看全部评论 (0)