2016-09-19 8 views
0

에 Msg_file_get_data : 괜찮아요내가 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; 

: 첫째, 나는 구조 형식 정의 생성

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

어떻게 넘을 수 있습니까? –