title: popen implicitly declared even though #include <stdio.h> is added
body: <p>This is tiny snippet of my code.</p>
  
  <pre><code>   #include &lt;stdio.h&gt;
     #include &lt;unistd.h&gt;
     #include &lt;stdlib.h&gt;
     #include &lt;time.h&gt;
     #include &lt;sys/stat.h&gt;
     #include &lt;sys/wait.h&gt;
     #include &lt;sys/types.h&gt;
     #include &lt;string.h&gt;
     #include &lt;sys/types.h&gt;
     #include &lt;sys/socket.h&gt;
     #include &lt;netinet/in.h&gt;
     #include &lt;arpa/inet.h&gt;
      ...
  
     FILE * pipe;
      ...
  
     pipe = popen ("ls /tmp -1", "r");
      ...
     pclose(pipe);
  </code></pre>
  
  <hr>
  
  <pre><code>blarg.c:106: warning: implicit declaration of function ‘popen’
  
  blarg.c:106: warning: assignment makes pointer from integer without a cast
  
  blarg.c:112: warning: implicit declaration of function ‘pclose’
  
  blarg.c:118: warning: assignment makes pointer from integer without a cast
  </code></pre>
  
  <p>I'm really unsure. I looked up popen and all it requires is stdio.h which is provided. What is missing, or is the problem in the rest of my code (I don't really want to show more code because its an a assignment).</p>