- 论坛徽章:
- 0
|
一个删除打开的文件的例子。用文件在不同进程之间通信的方法。
也回答了帖子:
〈SOS!并行进程中,一个进行删除动作,一个进行读取动作,如何避免可能出现的〉
这帖子的跟贴中有些人的观点不对。
delete 一个打开的文件(正被读写), 之间无竞争关系,是inode的counter问题。没有到0,unlink就没有最后DELETE。
- #include <stdio.h>
- main()
- {
- FILE *fp;
- int i;
- fp = fopen("1111", "w+");
- if(!fp) return 0;
- if(unlink("1111")) printf("error delete file.\n");
- i = fwrite("12345678", 1, 9, fp);
- printf("write %d bytes\n", i);
- if(0 == fork()) {
- char buf[128];
- memset(buf, 0, 128);
- fseek(fp, 0, 0);
- i = fread(buf, 1, 128, fp);
- printf("child read %d %s\n", i, buf);
- exit(0);
- }
- fclose(fp);
- }
复制代码
[ 本帖最后由 思一克 于 2006-8-2 15:32 编辑 ] |
|