Re: pthread - system() blocking
Re: pthread - system() blocking
- Subject: Re: pthread - system() blocking
- From: Jean-Daniel Dupas <email@hidden>
- Date: Tue, 01 Mar 2011 09:09:18 +0100
Le 1 mars 2011 à 00:29, Jason Coco a écrit :
>
> On Feb 28, 2011, at 18:20 , Stephen J. Butler wrote:
>
>> On Mon, Feb 28, 2011 at 5:13 PM, Mark E. Armstrong
>> <email@hidden> wrote:
>>> In a pthread application, I need to call system() to execute an external
>>> program. When system() is called in a non-main thread, any other calls to
>>> system() are blocked until the previous call has returned. How do we work
>>> around the blocking?
>>
>> Are you sure you aren't just seeing the effects of output buffering?
>> That would be my first guess at what's happening... not that system()
>> is being serialized.
>>
>> But if that IS actually the case, you can always fork/exec yourself.
>
> The system() call definitely blocks and is definitely serial. It will also override your signal handling for SIGINT, SIGQUIT and SIGCHLD.
> It's really just a simple convenience call for doing very simple shell execs. If you want to run things in parallel, you'll have to fork/exec
Actually, the recommended way is to spawn a process (using posix_spawn) instead of using fork/exec yourself.
-- Jean-Daniel
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden