subprocess kill
Jean-Michel Pichavant
jeanmichel at sequans.com
Mon Dec 7 05:04:06 EST 2009
luca72 wrote:
> On 5 Dic, 03:06, Carl Banks <pavlovevide... at gmail.com> wrote:
>
>> On Dec 4, 3:44 pm, luca72 <lucabe... at libero.it> wrote:
>>
>>
>>
>>
>>> On 5 Dic, 00:14, luca72 <lucabe... at libero.it> wrote:
>>>
>>>> On 5 Dic, 00:03, luca72 <lucabe... at libero.it> wrote:
>>>>
>>>>> On 4 Dic, 23:23, Mike Driscoll <kyoso... at gmail.com> wrote:
>>>>>
>>>>>> On Dec 4, 3:50 pm, luca72 <lucabe... at libero.it> wrote:
>>>>>>
>>>>>>> Hello i'm using subprocess in this way:
>>>>>>> self.luca = subprocess.Popen(['/usr/bin/
>>>>>>> dvbtune'+frase_sint],shell=True, stdout=self.f_s_l,stderr=self.f_s_e )
>>>>>>>
>>>>>>> then i kill:
>>>>>>> self.luca.Kill()
>>>>>>>
>>>>>>> but the process is still active and the file self.f_s_l increase it
>>>>>>> size because the process is not killed.
>>>>>>>
>>>>>>> How i can kill the process?
>>>>>>> Regards
>>>>>>>
>>>>>>> Luca
>>>>>>>
>>>>>> Seehttp://lmgtfy.com/?q=python+kill+subprocess+linux
>>>>>>
>>>>>> When I do that on my machine, the 2nd result has the answer:
>>>>>>
>>>>>> http://stackoverflow.com/questions/1064335/in-python-2-5-how-do-i-kil...
>>>>>>
>>>>>> -------------------
>>>>>> Mike Driscoll
>>>>>>
>>>>>> Blog: http://blog.pythonlibrary.org
>>>>>>
>>>>> Hello Mike i have also test but they never kill the process the file
>>>>> (stdout=self.f_s_l) increase it's size, haveyou some idea.
>>>>> also if i close the program the process is still active.
>>>>>
>>>>> Regards
>>>>>
>>>>> Luca
>>>>>
>>>> i'm able only to kill via shell like kill -9 process pid, Why?
>>>>
>>> Now the only way to solve the problem is to call a c program that kill
>>> the process via subprocess in other case i can't close it, i have also
>>> try with
>>>
>>> subprocess.Popen(['kill -9 dvbtune'] shell=True), but the process is
>>> still active
>>>
>> This is not working because the kill command does not accept the name
>> of a program. You have to give it a process id.
>>
>> As for your general question, we really can't answer it. There a lot
>> of reasons a process might not die when you try to kill it: it could
>> be trapping and ignoring signals (which is rude but it happens), it
>> could be stuck in a critical section, the program might be threaded
>> and not handling signals well, the program might have forked itself
>> and the original process id has disappeared, etc. We can't read your
>> mind or divine what's running on your computer, so we can't answer
>> your question. We can only suggest things that might be wrong. It's
>> up to you to investigate and/or dig deeper.
>>
>> Carl Banks
>>
>
> The firs thing that i have tested is with the process id get by
> Popen.pid ,but it don't works.
> Thank
I'm no specialist of linux stuff but the google link suggests that child PID may not be killed when killing the parent PID.
When using shell=True, your process is started in a shell, meaning the
PID of your subprocess is not self.luca.pid, self.luca.pid is the PID of
the shell.
- You might try to kill the pid of your subprocess explicitly (you can't
use self.luca.pid directly but you can filter the process list using
this parentID)
- If the argument shell=True is not absolutely required, you may set it
to false, self.luca.pid will then *be* the pid of your process
JM
More information about the Python-list
mailing list