rubyのsystemとコマンド出力`str`の違い

#include <stdio.h>
int main(){

  fprintf(stderr,"stderr\n");
  fprintf(stdout,"stdout\n");
}
#!/usr/bin/ruby

def number n; puts "(#{n})"; end

number 1
puts `./a.out`

number 2
`./a.out`

number 3
system "./a.out"
(1)
stderr
stdout
(2)
stderr
(3)
stderr
stdout