首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mpich不写入文件

mpich不写入文件
EN

Stack Overflow用户
提问于 2016-03-31 17:56:43
回答 1查看 54关注 0票数 0

我试图只使用进程0写入一个文件,但该文件甚至没有在目录中创建,如果我在没有mpich的情况下运行它,它可以正常运行(并且该文件是在项目目录中创建的),但当我使用mpich运行时却不是这样。

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

这是以下代码的测试代码:

代码语言:javascript
复制
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和项目文件夹中)

EN

回答 1

Stack Overflow用户

发布于 2016-03-31 18:49:54

无论文件是否创建,您都会收到该消息。执行以下操作:

代码语言:javascript
复制
  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++?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36330040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档