> On 22 Jul 2016, at 9:22 AM, Uli Kusterer <witness.of.teacht...@gmx.net> wrote:
> 
> On 21 Jul 2016, at 17:20, Graham Cox <graham....@bigpond.com> wrote:
>> One of my apps uses NSTask to wrap a command line utility that is embedded 
>> in the same app’s resources. This utility writes files to disk - I have no 
>> knowledge of which APIs it uses to do this. If the task has ended (and I can 
>> see that the actual instance of the running command line tool has 
>> disappeared from my process tasks in Activity Monitor), and I send the file 
>> to the trash, I can’t delete it (empty trash) until the app as a whole is 
>> quit - I get the message that the file is still in use.
>> 
>> I’ve checked that I’m closing down the NSTask properly, as far as I can see.
>> 
>> Is this the expected behaviour?
> 
> Are you reading all the data from the task (i.e. its standardOutput, not the 
> file) before you close it? AFAIR that's a prerequisite for it to properly 
> close.



I have a NSPipe attached to stdout. I’m not currently doing anything when the 
task termination handler is invoked to read from that, but it’s easy enough to 
do.

However, on further investigation, the problem doesn’t seem to be that.

Using lsof, I discovered that the process that was keeping the file open was 
indeed the command line tool I’m running with NSTask. But what was weird is 
that the processes that were keeping the file were running as a child process 
of Dock, not of my app, and were still running. Other instances of the process 
were running correctly as a child process of my app, and they don’t exhibit the 
problem, and of course go away when my app quits.

So what would cause a NSTask I create in my app to make the process it launches 
a child of Dock, not of my app?

—Graham



_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to