我需要找到两个文件的索引节点并进行比较,我需要使用stat来实现这一点。怎么做?

时间:2019-05-17 13:15:43

标签: c unix

我有一个复制程序,需要检查两个文件的i节点值,如果它们匹配,则该程序不应复制该文件(该文件不应复制到自身)。

我在这里有一些代码可以复制文件

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

#define BUFFERSIZE      4096
#define COPYMODE        0644

void oops(char *, char *);

int main(int ac, char *av[])
{
    int     in_fd, out_fd, n_chars;
    char    buf[BUFFERSIZE];
    int     same = 1;
    struct  stat fileStat;

    /* check args   */
    if ( ac != 3 ){
        fprintf( stderr, "usage: %s source destination\n", *av);
        exit(1);
    }

    /* open files   */
    if ( (in_fd=open(av[1], O_RDONLY)) == -1 )
        oops("Cannot open ", av[1]);

    if ( (out_fd=creat( av[2], COPYMODE)) == -1 )
        oops( "Cannot creat", av[2]);

    /* copy files   */
    while ( (n_chars = read(in_fd , buf, BUFFERSIZE)) > 0 )
        if ( write( out_fd, buf, n_chars ) != n_chars )
            oops("Write error to ", av[2]);
    if ( n_chars == -1 )
        oops("Read error from ", av[1]);

    /* close files  */
    if ( close(in_fd) == -1 || close(out_fd) == -1 )
        oops("Error closing files","");
}

0 个答案:

没有答案