#2326: Command functions in grass.script.core miss a correct error reporting -------------------------+-------------------------------------------------- Reporter: wenzeslaus | Owner: grass-dev@… Type: enhancement | Status: new Priority: normal | Milestone: 7.1.0 Component: Python | Version: svn-trunk Keywords: script | Platform: All Cpu: Unspecified | -------------------------+--------------------------------------------------
Comment(by glynn): Replying to [comment:2 zarch]: > I can modify the Module class behaviour changing the default parameters for stdout_ and stderr_ to PIPE That's probably unwise. It would force the caller to either explicitly set them to None or to consume the output, e.g. via the .communicate() method. I wouldn't be surprised if many scripts do neither; the result being that the call works fine unless it writes more than a buffer's worth of output, in which case it will just hang. I also wouldn't be surprised if scripts try to re-implement logic similar to .communicate() but get it wrong. You need to use either threads or non- blocking I/O. If you perform a blocking read on either pipe and more than a buffer's worth of data is written to the other pipe, you get deadlock (i.e. the script hangs). Also, when both stdout and stderr are associated with different pipes, it's impossible to reconstruct the "normal" output because there's no way to determine the relative order. Meaning that you can't e.g. associate an error message with any particular line of progress output. This is why the support for "stdout=PIPE, stderr=STDOUT" exists. -- Ticket URL: <http://trac.osgeo.org/grass/ticket/2326#comment:3> GRASS GIS <http://grass.osgeo.org> _______________________________________________ grass-dev mailing list grass-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/grass-dev