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