最近碰到关于多进程写文件的问题,问题的描述如下:有一个MPI程序,会以n个进程运行程序,然后在每个进程结束的时候向timer.txt文件写入数据。
开始的时候,用的是普通的写文件操作,显然不行,若是各个进程结束的时间相差较大,不会有错误,若是执行时间相差很小,大约是几是个毫秒,就会导致出错,其实这种做法本身就存在问题。
后来,参考unix环境高级编程提到的方法,又试用了其中三种方法,最后还是出错。由于之前未接触多进程编程,所以对错误的原因不是很确定,不知道是否为自己用法有问题,特写出来大家讨论下。
方法一:用open(time.txt, O_APPEND | O_WRONLY ),具体代码如下:
int w_timer_handle;
char temp[1000];
int len;
int w_len;
int offset;
sprintf(temp, "process %d time_total %lf comm_time %lf\n阅读全文>
发表于 @ 2009年03月20日 17:32:00|评论(loading...)|举报|收藏