Linux系统编程-文件共享

文件共享:多个任务共同操作一个文件或者协同完成任务。

面试:写程序删除一个文件的第10行。

类似于删除数组的某一个元素,要做的是将后面的元素都往前移,覆盖要删除的那个元素。

思路:找到第10行的行首和第11行的行首,从第11行开始一个一个往前覆盖。

方法1:

while()
{
/* 找到第11行的行首,读,然后找到第10行的行首,写 */
   lseek 11 + read + lseek 10 + write

/* 最后会多出来一个空间,将整体文件的长度做一个新的长度的截短,将多余的那一块截掉 */
/* 函数:truncate/ftruncate */
}

方法2: 

// 第一次以只读方式打开
1->open r   ->fd1 -> lseek 11
// 第二次以读写方式打开,要确保文件一定存在,所以这里没有用w
2->open r+   ->fd2 -> lseek 10

// 以文件描述符fd1读一块,文件描述符fd2写一块
while()
{
   1->fd1->read
   2->fd2->write
}



/********************************/
process1->open->r

process2->open->r+

p1->read -> p2->write

truncate

truncate是把未打开的文件截断到多长,ftruncate是把已打开的文件截断到多长。

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值