I'm trying to understand why this is sometimes works, and sometimes doesn't - the open and read syscalls.
//open files
fd1=open(argv[1],"O_RDONLY");
if(fd1==-1){
printf("open file number 1 failed\n");
exit(0);
}
fd2=open(argv[2],"O_RDONLY");
if(fd2==-1){
printf("open file number 2 failed\n");
exit(0);
}
//read first byte
r1=read(fd1, &byte1, 1);
if(r1==-1){
printf("read 1 1 error\n");
close(fd1);
exit(0);
}
r2=read(fd2, &byte2, 1);
if(r2==-1){
printf("read 2 error\n");
close(fd2);
close(fd1);
exit(0);
}
The output:
~/Desktop/os$ ./comp/out 1.txt 2.txt
open file number 1 failed
~/Desktop/os$ ./comp/out 1.txt 2.txt
read 1 1 error
~/Desktop/os$ ./comp/out 1.txt 2.txt
open file number 1 failed
~/Desktop/os$ ./comp/out 1.txt 2.txt
open file number 1 failed
~/Desktop/os$ ./comp/out 1.txt 2.txt
read 1 1 error
~/Desktop/os$ ./comp/out 1.txt 2.txt
read 1 1 error
Or as image: https://i.stack.imgur.com/NkvNC.png