文件描述符的偏移指针

没有血缘关系的进程间是不会共享文件描述符的偏移指针

示例:

#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 &

Guess you like

Origin blog.csdn.net/wangkai6666/article/details/118655325