Мне нужно найти i-узел из двух файлов и сравнить их, мне нужно использовать stat для этого. Как это сделать? - PullRequest
0 голосов
/ 17 мая 2019

У меня есть программа копирования, которая должна проверить значения 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","");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...