文件截取,改名,删除

 

例1: 文件截短. 将指定的文件截短为指定的长度

mytruncate.c

#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>

#define ERROR(flag)                 \
     if(flag)                \
    {                    \
        printf("%d: ",__LINE__);    \
        fflush(stdout);            \
        perror("error");        \
        exit(errno);            \
    }

int main(int argc,char *argv[])
{
    int ret = truncate(argv[1],atoi(argv[2]));
    ERROR(ret == -1);

    return 0;
}

编译链接执行, 输出如下:

上图中tfile内容被截成指定的长度. 最后一次在7个字符长度上截成9个字符长度, 在后面加了两个0

 

例2: 文件改名

myrename.c

#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>

#define ERROR(flag)                 \
     if(flag)                \
    {                    \
        printf("%d: ",__LINE__);    \
        fflush(stdout);            \
        perror("error");        \
        exit(errno);            \
    }

int main(int argc,char *argv[])
{
    int ret = rename(argv[1],argv[2]);
    ERROR(ret == -1);

    return 0;
}

编译链接执行, 输出结果如下:

将文件111改名为222

 

例3: 用remove()函数删除一个目录项

myremove.c

#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>

#define ERROR(flag)                 \
     if(flag)                \
    {                    \
        printf("%d: ",__LINE__);    \
        fflush(stdout);            \
        perror("error");        \
        exit(errno);            \
    }

int main(int argc,char *argv[])
{

    int ret = remove(argv[1]);
    ERROR(ret == -1);

    return 0;
}

编译链接执行, 结果如下:

 

例4: 用unlink()删除一个目录项

myunlink.c

#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define ERROR(flag)                 \
     if(flag)                \
    {                    \
        printf("%d: ",__LINE__);    \
        fflush(stdout);            \
        perror("error");        \
        exit(errno);            \
    }

int main(int argc,char *argv[])
{

    char buf[100];

    int fd = open("tmp",O_RDWR | O_CREAT,S_IRWXU);
    ERROR(fd == -1);

    int ret = unlink("tmp");
    ERROR(ret == -1);

    ret = write(fd,"hello world",11);
    ERROR(ret != 11);

    ret = lseek(fd,0,SEEK_SET);
    ERROR(ret == -1);

    ret = read(fd,buf,11);
    ERROR(ret < 0);
    buf[ret] = 0;
    puts(buf);

    close(fd);

    return 0;
}

编译链接执行, 输出如下:

 

posted @ 2016-01-13 19:59  zhanglong71  阅读(194)  评论(0编辑  收藏  举报