Right, that's indeed what is (very sadly) happening. It turned out that the 
stderr output is the part that I really need in this case. 
The only working solution I found was to do 

    run(pipeline(ignorestatus(cmd), stdout=DevNull, stderr="errs.txt"))
    t = readall("errs.txt");

but it's annoying having to write a disk file and read its contents.
 
Had some hope on this one, but no way too

julia> readall(run(pipeline(ignorestatus(cm), STDOUT, STDOUT)))
Image Difference (RootMeanSquaredError):
           Normalized    Absolute
          ============  ==========
     Red: 0.3709618690    24311.0
   Green: 0.3611391197    23667.3
    Blue: 0.2638682470    17292.6
   Total: 0.3354900017    21986.3
C:/programs/GraphicsMagick/gm.exe compare: image difference exceeds limit 
(0.33549 > 0.001).
ERROR: MethodError: `readall` has no method matching readall(::Void)

and this one completely hangs the REPL giviing me no choice but killing the 
shell window

    rd,wr=redirect_stderr();
    run(pipeline(ignorestatus(cmd), stdout=DevNull, stderr=rd))

now if try to read from 'rd'

    readall(rd)    # ---> IceAge


sábado, 12 de Setembro de 2015 às 15:35:39 UTC+1, Miguel Bazdresch escreveu:
>
> What could be happening is that `gm.exe` is printing that message to 
> STDERR, which is not captured by `readall()`. In theory, the new pipeline 
> infrastructure should let you capture STDERR, but I haven't had the time to 
> figure out exactly how. Maybe somebody who knows will chime in.
>
> -- mb
>
> On Fri, Sep 11, 2015 at 9:17 PM, J Luis <[email protected] <javascript:>> 
> wrote:
>
>> Found a ignorestatus function. Better, but not yet good enough. It still 
>> prints a message even if using a suppression ';'
>>
>> julia> readall(ignorestatus(cm));
>> C:/programs/GraphicsMagick/gm.exe compare: image difference exceeds limit 
>> (0.336711 > 0.001).
>>
>>
>> sábado, 12 de Setembro de 2015 às 02:00:25 UTC+1, J Luis escreveu:
>>>
>>> Thanks. It turned out my main error was that I was build the Cmd object 
>>> by first creating the command as a string and after wrapping it in back 
>>> ticks.
>>>
>>> But I continue in troubles. Right, I can run the command, a 
>>> GraphicsMagic image comparison command, but when that comparison say the 
>>> two images are different gm.exe returns an error code != 0 and Julia 
>>> interprets it a command error. But it isn't, it only means the two images 
>>> are different. As a consequence the julia function where this happens 
>>> aborts (an example in REPL bellow).
>>>
>>> I tried with a try catch but not even that prevented the function 
>>> abortion. How can I get out of this one?
>>>
>>> julia> readall(cm)
>>> C:/programs/GraphicsMagick/gm.exe compare: image difference exceeds 
>>> limit (0.33549 > 0.001).
>>> ERROR: failed process: Process(`C:/programs/GraphicsMagick/gm.exe 
>>> compare -density 200 -maximum-error 0.001 -highlight-color magenta 
>>> -highlight-style assign -metric rmse -file V:/example_02.png 
>>> C:/progs_cygw/GMTdev/gmt5/branches/5.2.0/doc/examples/ex02/example_02.ps 
>>> V:/example_02.ps`, ProcessExited(1)) [1]
>>>  in pipeline_error at process.jl:548
>>>
>>> sábado, 12 de Setembro de 2015 às 01:17:57 UTC+1, Simon Kornblith 
>>> escreveu:
>>>>
>>>> readall(`cat test`) or similar
>>>>
>>>> On Friday, September 11, 2015 at 7:56:43 PM UTC-4, J Luis wrote:
>>>>>
>>>>> Ok, I've spend about an hour around "run" "open", "run(pipeline(..." 
>>>>> but no way.
>>>>> In Matlab I would do
>>>>>
>>>>>     [status, cmdout] = system(cmd);
>>>>>
>>>>> but in Julia the most a can reach is to run the command
>>>>>
>>>>> com = "C:/programs/GraphicsMagick/gm.exe compare -density 200 ...
>>>>>
>>>>>    run(`com')
>>>>>
>>>>> but I need the result of that execution. 
>>>>> How to?
>>>>>
>>>>> Thanks
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>

Reply via email to