<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Thu, Sep 27, 2018 at 11:02 PM David Gobbi <<a href="mailto:david.gobbi@gmail.com">david.gobbi@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Thanks, Andrew.  So now we know that errno is EACCES, which corresponds to a Windows filesystem error of ERROR_ACCESS_DENIED or ERROR_SHARING_VIOLATION.  I strongly suspect the latter.</div><div dir="ltr"><br></div><div>So there are two options:</div><div><br></div><div>1) retry a few times (e.g. 5 times over 5 seconds), in the hope that the sharing violation will clear up, which it probably will because antivirus software only takes a fraction of a second to scan a small file.</div><div><br></div><div>2) write to a temporary file which is then renamed to ..Python.cxx (in which case the 'rename' operation has to retry if it encounters a sharing violation).</div><div><br></div><div>The latter is what CMake does (its "cmSystemTools::RenameFile()" function retries, so cmake doesn't seem to have any magic that makes retries unnecessary).</div><div><br></div><div>I'm tempted to go with (1) due to its simplicity, and because if we used a random temporary file we'd have to find some way to remove that file if vtkWrapPython didn't exit cleanly.</div></div></div></div></div></blockquote><div><br></div><div>Another option that might work:</div><div><br></div><div>3) If the output file already exists, then delete it with the Windows DeleteFile() function before calling fopen() to create a new file with the same name.</div></div></div>