我试图只使用进程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和项目文件夹)
答案 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");
}