没有血缘关系的进程间是不会共享文件描述符的偏移指针
示例:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <unistd.h>
static char tmp[10];
void fill(char *s, int len, char data) {
int i;
for(i = 0; i < len - 1; i++) {
s[i] = data;
}
s[len - 1] = '\n';
}
int main(int argc, char **argv)
{
int i;
int ret;
int fd;
fd = open("/home/kiss1994/study/test27/demo.txt", O_RDWR);
if(fd < 0) {
printf("open failed\n");
return -1;
}
printf("open successful\n");
i = 0;
while (i < 10) {
printf("before write!\n");
// fill(tmp, 10, i + 97); // ./main
fill(tmp, 10, i + 65); // ./main1
ret = write(fd, &tmp, 10);
if (ret < 10) {
printf("write err!\n");
} else {
printf("write ok, the %d time\n", i);
}
printf("after write!\n");
sleep(2);
i++;
}
ret = close(fd);
if (ret < 0) {
printf("close failed!\n");
} else if (ret == 0) {
printf("close success!\n");
} else {
printf("close invalid!\n");
}
return 0;
}
开两个进程
./main &
./main1 &