This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Unable to delete directory in Cygwin


Eric Blake wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

According to Gina Verlekar on 6/15/2006 3:53 AM:
Hi,

I have implemented some changes in the linker code for some intermediate
processing. For that I need to create a temporary directory, generate
some intermediate  in it, process those files by calling a function.
After processing of the intermediate files, I delete the intermediate
files and the temporary directory.	
While this logic works fine in the linux, the temporary directory does
not get deleted in cygwin.

Windows is not Linux, and will not allow users to delete in-use directories (where a directory is considered in-use if it contains files, or if any process is using that directory as its current working directory), nor the clean deletion of files that are still open. POSIX allows this behavior, and cygwin cannot change Window's implementation of deletion semantics. Just because Linux behaves nicer doesn't mean that it is portable to remove in-use directories. Fix your code to first close all outstanding file handles before trying to remove the files, and then the directory.

That said, cygwin does try to emulate linux, and if someone were to
contribute a patch that would allow cygwin to emulate directory deletion
if it knows that all open handles have also been scheduled for unlinking
at process end, then http://cygwin.com/acronyms/#PTC.

Not a patch, but for the record, it looks like Interix solves this problem (http://www.interopsystems.com/tools/tm.aspx?m=9403). Maybe Cygwin could do something similar?


(And in case that link dies; apparently Interix has a special 'temp' directory where "unlinked" files are sent until their handles are all closed.)

--
Matthew
...Ruthlessly beating Windows with a hammer until it looks like POSIX.


-- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]