簡體   English   中英

c管道為什么是fd [0]和fd [1] 3和4

[英]c pipe why is fd[0] and fd[1] 3 and 4

我下面有一個代碼段。 我想看看fd1和fd0的價值是什么,在我創建的所有過程中它們最終都是3和4? 為什么是這樣。

  if (pipe(fd) < 0)
        printf("Pipe Error");
      if ((pid = fork()) < 0 )
      {
        printf("Fork Error");
      }
      else if (pid > 0) //daddy
      {
        close (fd[0]);
        write(fd[1],"Hi, Im Parent \n", 15);
        printf("Value of fd1 is %d and fd0 is %d in parent. \n", fd[1], fd[0]);
        printf("Parent Process is %d \n", pid);
        printf("My true id is: %d and my parent id is %d \n", getpid(), getppid());
        wait();
      }

文件描述符 (從openpipe類的函數返回,盡管以不同的方式返回)是代表打開文件的小整數。

它們與文件句柄的概念不同,文件句柄是標准C中指向FILE類型的指針(我使用術語“句柄”,盡管標准本身只是簡單地聲明了它將指針與流相關聯並返回該指針)。

因此,你所期望的一樣,你所看到的,行為pipe()抓住當前未使用的前兩個描述符。

文件描述符012 ,分別指的是標准輸入,標准輸出和標准誤差,類似於FILE *stdinstdoutstderr

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM