Hi all !
I’ve a problem launching a command line utility using backticks. The command line executes (I can see its output, so its found) but something is going wrong at some point may be when passing parameters.
I tried with a Ruby two liner from the same directory with quite the same code and the result was absolutely ok.
Both cmd used were exactly the same.
So when using backticks, is there a Crystal behaviour that is different than Ruby one ?
I tried this way and it works
process = Process.new(cmd, shell: true, output: Process::Redirect::Pipe)
The difference between backtick and your
Process.new is that backticks forwards STDIN and STDERR.
Maybe that has some effect?
But Ruby should do the same. I’m not aware of any relevant difference.
I don’t know, the Ruby code and Crystal code were the same, run from the same dir
I even tried to launch the Ruby script from Crystal, and got the same problem…
Maybe the child process isn’t reading the STDIN, the buffer got full then the parent process was put to sleep by the kernel on the write call until the child process read STDIN and free up some buffer so the write call can complete.
I forgot to mention that this utility does not read from stdin, nor need fancy bash eval
It’s an assembler, so more like
asm -I ./include -o foo myprog
I really don’t get why it worked with Ruby… Might also be a bug in the asm too… Dunno