I have created a dictionary where I associate an id with a subprocess.
Something like:

```
cmd = "ls"
processes[id] = subprocess.Popen([cmd], shell=True, stdout=subprocess.PIPE)

```

Then I call a method with this process map as an input, that checks which process has finished. If the process finishes, I check the process's `stdout.read()` for a particular string match.

The issue is sometimes `stdout.read()` returns an empty value which causes issues in string matching.

Sample Code:

```
#Create a map
processes[id] = subprocess.Popen([cmd], shell=True, stdout=subprocess.PIPE)
...
#Pass that map to a method which checks which processes have finished
completedProcesses(processes)

def completedProcesses(processes):
    processList = []
    for id,process in processes.iteritems():
        if process.poll() is not None:
            #If some error in process stdout then print id
            verifySuccessStatus(id, processes[id])
            processList.add(id)

def verifySuccessStatus(id, process):
    file=open(FAILED_IDS_FILE, 'a+')
    buffer =  process.stdout.read() #This returns empty value sometime
    if 'Error' not in buffer:
        file.write(id)
        file.write('\n')
    file.close()

```

I am new to python, I might be missing some internal functionality understanding of subprocess