Msg_file_get_data in SimGrid



我通过SimGrid框架打开文件:

msg_file_t file = MSG_file_open("/scratch/bin/tesh", NULL);
XBT_INFO("file size is %zd", MSG_file_get_size(file));

没关系:

[carl:host:(1) 0.000000] [remote_io/INFO] file size is 356434

然后我想在这个文件中设置一些数据。首先,我创建typepedef结构:

typedef struct {
    char* number_used;
}data, *dataPtr;

然后我用MSG_file_set_data设置数据到这个文件:

dataPtr data_1 = xbt_new(data, 1);
data_1->number_used = xbt_strdup("1");
MSG_file_set_data(file, data);

但是关闭文件后我无法得到data_1->number_used的值:

file = MSG_file_open("/scratch/bin/tesh", NULL);
dataPtr data_2 = MSG_file_get_data(file);
XBT_INFO("number used %s", data_2->number_used);

给出segmentation fault, data_2的值为null。我做错了什么?

msg_file_t对象只存在于MSG_file_open和MSG_file_close调用之间。对同一个文件名再次调用MSG_file_open会创建一个新的msg_file_t对象(一个新的描述符)。那么附加到msg_file_t的用户数据在多个打开/关闭文件名时都是而不是持久的

相关内容

  • 没有找到相关文章

最新更新