我正在编写一个读取DICOM文件的应用程序,但必须使用其他库来完成。我发现该库可以打开文件,但完成后不会关闭文件。而且这个库不是开源的。我知道在Linux中,打开文件数限制为1024,我可以更改此数字。但我不想这么做,我希望关闭由库打开的文件。如果我知道文件已经被打开了,如何在C语言中关闭它呢?我正在使用从http://cbi.nyu.edu/software/dinifti.php获取的DICOM2NII库。以下是打开文件的代码,但它没有关闭文件。
bool DICOMImage::OpenFile(const char *path)
{
bool retValue = true;
DCM_Objects handle_;
unsigned long options = DCM_ORDERLITTLEENDIAN | DCM_FORMATCONVERSION | DCM_VRMASK;
// Try opening as PART10, if it fails it's might be bcause it does not have
// a preable and the try it that way
if ( DCM_OpenFile(path, options | DCM_PART10FILE, &handle_) != DCM_NORMAL )
{
DCM_CloseObject(&handle_);
COND_PopCondition(TRUE);
if ( DCM_OpenFile(path, options, &handle_) != DCM_NORMAL )
{
retValue = false;
}
else
retValue=true;
}
return retValue;
}