# processing file 'exec_adhoc_file_descriptor_change_tests-int.trace' ... # processing file 'adhoc_file_descriptor_change_tests-int.trace' ... @type trace # Tests for a file underlying a file-descriptor # being modified while the descriptor is open # create a file with some content 7: open "f1.txt" [O_CREAT;O_RDWR] 0o644 8: Tau 9: RV_num(3) 10: write! (FD 3) "0123456789" 10 11: Tau 12: RV_num(10) 14: open "f1.txt" [O_RDONLY] 15: Tau 16: RV_num(4) # check we are at the beginning 18: read! (FD 4) 100 19: Tau 20: RV_bytes("0123456789") # check lseek to FD 4 does not affect FD 3 23: lseek (FD 4) 0 SEEK_SET 24: Tau 25: RV_num(0) 26: write! (FD 3) "AB" 2 27: Tau 28: RV_num(2) # but content is present in both 31: pread! (FD 3) 100 0 32: Tau 33: RV_bytes("0123456789AB") 34: pread! (FD 4) 100 0 35: Tau 36: RV_bytes("0123456789AB") 38: close (FD 3) 39: Tau 40: RV_none 41: close (FD 4) 42: Tau 43: RV_none # open f1, then delete it 48: open "f1.txt" [O_RDWR] 49: Tau 50: RV_num(3) 51: open "f1.txt" [O_RDONLY] 52: Tau 53: RV_num(4) 54: unlink "f1.txt" 55: Tau 56: RV_none 57: pread! (FD 3) 100 0 58: Tau 59: RV_bytes("0123456789AB") 60: pread! (FD 4) 100 0 61: Tau 62: RV_bytes("0123456789AB") 64: open_close "f1.txt" [O_RDONLY] 65: Tau 66: ENOENT 68: open "f1.txt" [O_EXCL;O_CREAT;O_RDWR] 0o644 69: Tau 70: RV_num(5) 71: read! (FD 5) 100 72: Tau 73: RV_bytes("") 74: write! (FD 5) "can't stop, won't stop" 22 75: Tau 76: RV_num(22) 77: close (FD 5) 78: Tau 79: RV_none 81: pwrite! (FD 3) "___" 3 3 82: Tau 83: RV_num(3) 85: close (FD 3) 86: Tau 87: RV_none 89: pread! (FD 4) 100 0 90: Tau 91: RV_bytes("012___6789AB") 92: close (FD 4) 93: Tau 94: RV_none 96: open "f1.txt" [O_RDONLY] 0o644 97: Tau 98: RV_num(3) 99: read! (FD 3) 100 100: Tau 101: RV_bytes("can't stop, won't stop") 102: close (FD 3) 103: Tau 104: RV_none 106: unlink "f1.txt" 107: Tau 108: RV_none # open f1, then rename it 111: open "f1.txt" [O_CREAT;O_RDWR] 0o644 112: Tau 113: RV_num(3) 114: write! (FD 3) "0123456789" 10 115: Tau 116: RV_num(10) 117: close (FD 3) 118: Tau 119: RV_none 121: open "f1.txt" [O_RDONLY] 122: Tau 123: RV_num(3) 124: rename "f1.txt" "f2.txt" 125: Tau 126: RV_none 127: pread! (FD 3) 100 0 128: Tau 129: RV_bytes("0123456789") 131: open_close "f1.txt" [O_RDONLY] 132: Tau 133: ENOENT 134: open "f2.txt" [O_RDONLY] 135: Tau 136: RV_num(4) 137: pread! (FD 4) 100 0 138: Tau 139: RV_bytes("0123456789") 140: close (FD 4) 141: Tau 142: RV_none 143: close (FD 3) 144: Tau 145: RV_none # trace accepted