mpich没有写入文件

时间:2016-03-31 09:56:43

标签: c file-io mpich

我试图只使用进程0写入文件,但是文件甚至没有在目录中创建,如果我运行它没有mpich它运行正常(并且文件是在项目目录中创建的,因为它应该是),但不是当我和mpich一起跑。

我不需要并行文件io,但我需要并行其他一些代码,我确实需要使用文件,因此我使用的是进程0。

这是一个测试代码:

void main(int argc, char *argv[])
{

  MPI_Init(&argc, &argv);
  int  numOfProcs, myid, j;
  MPI_Comm_rank(MPI_COMM_WORLD, &myid);
  MPI_Comm_size(MPI_COMM_WORLD, &numOfProcs);
  MPI_Status status;

  if (myid==0)
  {
      FILE* f = fopen("wee.txt","w");

      printf("address = %p",f);

      fprintf(f, "ee");
      fclose(f);
      printf("file creation done\n");
  }
  MPI_Finalize();

}//END of main

文件打开并返回一个地址,我搜索过它可能会在另一个目录中创建但无法找到它。

代码返回的地址的例子: 00007FFB40537500

我确实得到了msg:"文件创建完成"

该文件在文件夹中不存在

编辑:我在管理员帐户上运行,项目位于系统磁盘中(不在程序文件中,只有c和项目文件夹)

1 个答案:

答案 0 :(得分:0)

您将获得该消息,无论文件是否被创建。这样做:

  if (myid==0) {
      FILE* f = fopen("wee.txt","w");
      if(f == NULL) {
        printf("File did NOT open\n");
        return -1;
      }
      fprintf(f, "ee");
      fclose(f);
      printf("file creation done\n");
  }

请阅读此内容:What should main() return in C and C++?