2016-09-19 3 views
0

にMsg_file_get_data:それはOKだ私は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 

は、その後、私は、このファイルにいくつかのデータを設定したいです。それから私は、このファイルに MSG_file_set_dataにデータを設定

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

:まず、私は構造typedefを作成

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となります。私は何を間違えたのですか?

答えて

2

msg_file_tオブジェクトは、MSG_file_openとMSG_file_closeの間にのみ存在します。同じファイル名でMSG_file_openを再度呼び出すと、新しいmsg_file_tオブジェクト(新しい記述子)が作成されます。次に、msg_file_tに添付されたユーザーデータは、で、ファイル名に複数のオープン/クローズを永続的には持たないです。

+0

来る方法は? –

関連する問題