关于共享打开文件

  今天到朋友的项目帮忙,他们的程序需要打开一个表格文件,我老是打开失败,后来他们告诉我,我的表格打开着的,所以open file就失败了,我x,难道就不能做成共享打开么?

  fopen_s函数不能共享打开文件的,要使用_fsopen。。。

  自己写了个测试例子测试了下:

  

FILE* pf = NULL;
errno_t eRet = fopen_s(&pf, "c:/test.dat", "r+");
if (eRet)
{
    printf("fail to open file: test.dat\n");
}
else
{
    printf("open file success: test.dat\n");
}

  在开着测试程序的情况下,再次打开第二个测试程序时,就报fail了。

  然后我又写了段测试代码:

  

FILE* pf = NULL;
pf = _fsopen("c:/test.dat", "r+", _SH_DENYNO);
if (!pf)
{
    printf("fail to open file: test.dat\n");
}
else
{
    printf("open file success: test.dat\n");
}

  这次没问题了,每个进程都能打开那个文件。

  简单说下_fsopen的第三个参数吧:

  _SH_DENYRW 拒绝读写

  _SH_DENYWR 拒写

  _SH_DENYRD 拒读

  _SH_DENYNO 可读写

  _SH_SECURE 安全保护模式

 

  

 

posted @ 2013-03-27 03:07  抱月听风  阅读(422)  评论(0编辑  收藏  举报