/** 后執行,嘗試讀取另外一個進程寫入文件的內容*/ #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <fcntl.h> #include <string.h>int main(void) {char buf[1024];char *str = "----------test2 write secesuss--------\n";int ret;sleep(2); //睡眠2秒,保證test1將數據寫入test.txt文件int fd = open("test.txt", O_RDWR);//嘗試讀取test.txt文件中test1寫入的數據ret = read(fd, buf, sizeof(buf)); //將讀到的數據打印至屏幕 write(STDOUT_FILENO, buf, ret);//寫入數據到文件test.txth中, 未修改讀寫位置 write(fd, str, strlen(str));printf("test2 read/write finish\n");close(fd);return 0; }
?
/** 先執行,將數據寫入文件test.txt*/ #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <stdlib.h> #include <string.h>#define N 5int main(void) {char buf[1024];char *str = "--------------secesuss-------------\n";int ret;int fd = open("test.txt", O_RDWR|O_TRUNC|O_CREAT, 0664);//直接打開文件寫入數據 write(fd, str, strlen(str));printf("test1 write into test.txt finish\n");sleep(N);lseek(fd, 0, SEEK_SET);ret = read(fd, buf, sizeof(buf));ret = write(STDOUT_FILENO, buf, ret);if (ret == -1) {perror("write second error");exit(1);}close(fd);return 0; }
?