title: When there is no output on the left side of the pipe, what happened on the right side of the pipe?
body: <p>when I put a no output program on the left of pipe, such as:</p>
  <pre class="lang-c prettyprint-override"><code>// program a
  int main() {
      char s[255];
      scanf(&quot;%s&quot;, s);
      return 0;
  }
  </code></pre>
  <p>and a program with input &amp; output on the right:</p>
  <pre class="lang-c prettyprint-override"><code>// program b
  int main() {
      char s[255];
      scanf(&quot;%s&quot;, s);
      for(char *c = s; *(c) != '\0'; c++) printf(&quot;%d &quot;, *c);
      return 0;
  }
  </code></pre>
  <p>when I try to connect them with pipe:</p>
  <pre class="lang-sh prettyprint-override"><code>$ ./a | ./b
  </code></pre>
  <p>No matter what the input is, I always get two ascii codes: <code>64</code> &amp; <code>3</code> in my computer, Even though I know that 'a' has no output.</p>
  <p>I want to know if this is because of my program, or because of the shell, or because of the pipeline, or something else...</p>