Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
316 views
in Technique[技术] by (71.8m points)

linux - how to determine if two file are identical in c using system call

i need to see if 2 files are identical so i used struct stat

    fdin = open(argv[0],O_RDONLY);
    statos= fstat(fdin, &stat);
    close(fdin);
    fdin = open(argv[1],O_RDONLY);
    statos1= fstat(fdin, &stat1);
    close(fdin);
    printf("file 1 is in size: %lu
",stat1.st_ino);
    printf("file 2 is in size: %lu
",stat.st_ino);

the result

file 1 is in size: 9569486
file 2 is in size: 9569479

why is the st.ino aren't identical for the same file with the same path?? and how can i do so if two different file are identical i could check it with system call

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

It's because you're opening two different files:

./a.out ab.txt ab.txt

argv[0] is the executable, argv[1] is 'ab.txt'.

If you put error checks into your code, it would be clear.

You're also printing the inodes as "size", for some reason.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...