I need to run the 'myexe' executable through python script or python program:
./myexe arg1 arg2 >& outfile
my approach is as follows :
1   import os
2   import subprocess
3   import time
4   cmd = "./myexe arg1 arg2 >& outfile"
5   print 'cmd = ', cmd
6   proc = subprocess.Popen(command, shell=True)
7   # delay for 10 seconds
8   time.sleep(10)                                                       
9   # kill the process if not finished
10  os.system("ps -e | grep \"myexe\" | awk '{print $1}'")               # --- process id = x+1
11  if proc.poll() == None:
14     print 'Deliberately kill the Process= ', proc.pid                 # --- process id = x
15     proc.kill()
Here I noticed that, when I use the io redirection then the process id printed by the system command(line number-10), is different then the one printed in the else part(line number-14).
If I use command as "./myexe arg1 arg2", then the value of process id is correct. So, how can I use subprocess with the shell command which also uses io redirection ?
Here redirection is used for both stderr and stdout in a same file.
Kindly help me in resolving the issue and share efficient approach to accomplish this. And also How can I terminate(kill) the process id-x, if not finished after an arbitrary delay using some efficient approach ?
In addition to this, at last how could I know whether process is terminated succefully or by sending a kill signal: I am doing it as following:
if proc.wait() == 0:
   print 'Terminate successfully'
else:
   print 'Terminated by kill signal'
Or setting some flag after call to proc.kill() can also be used.
Does it adhere with the python rules/ expected usage?
Note: Killing the process is required to avoid the infinite loop scenario which might could occur in myexe executable. outfile is further read by the python script (not shown here).
 
     
    