Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
320 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 Reply

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...