为什么write()文件后,ls-l 时为0呢?

fan2290 2006-09-12 11:49:29
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include"apue.h"
#include"unix_err.h"
int main(void)
{
int wfd;
char buf[]="abcd";

if(wfd = creat("foo", FILE_MODE) < 0)
{
perror("Create error for foo.\n");
}
if(write(wfd, buf, 4) != 4)
{
perror("Write error for foo. \n");
}


exit(0);
}


创建并写文件后,

ls -l foo
后 得到
-rw-r--r-- 1 abc group 0 Sep 12 11:27 foo

为什么 group 后为0呢?
...全文
201 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fan2290 2006-09-15
  • 打赏
  • 举报
回复
谢谢
lseek 还是有点不明白啊
非要在文件尾部写入数据 ,这个空洞的大小才算到文件大小里面吗?
fytzzh 2006-09-14
  • 打赏
  • 举报
回复
lseek只是修改了文件表中当前文件的位移量.
fan2290 2006-09-14
  • 打赏
  • 举报
回复
当只有create 和 write时
ls -l foo
-rw-r--r-- 1 abc group 4 Sep 12 11:27 foo
增加 lseek后
ls -l foo
-rw-r--r-- 1 abc group 4 Sep 12 11:27 foo

文件的大小没有变化吗?
lseek后不是 已经产生了 空洞吗?
fytzzh 2006-09-14
  • 打赏
  • 举报
回复
为什么 lseek 后没有变化呢???
============
文件的变化?在写点内容.
fan2290 2006-09-14
  • 打赏
  • 举报
回复
谢谢
这个是修改后的

#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include"apue.h"
#include"unix_err.h"
int main(void)
{
int wfd;
char buf[]="abcd";

if( (wfd = creat("foo", FILE_MODE)) < 0)
{
perror("Create error for foo.\n");
}
if(write(wfd, buf, 4) != 4)
{
perror("Write error for foo. \n");
}


if(lseek(wfd, 1024, SEEK_SET) < 0)
{
perror("lseek error for foo. \n");
}


exit(0);
}


为什么 lseek 后没有变化呢???
zhaodm 2006-09-12
  • 打赏
  • 举报
回复
优先极问题吧
if( (wfd = creat("foo", FILE_MODE) )< 0)
就ok 了
growup 2006-09-12
  • 打赏
  • 举报
回复
退出前close()下呢

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧