/** 后执行,尝试读取另外一个进程写入文件的内容*/ #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; }