title: Why does writing to a file descriptor after the target file has been deleted succeed?
body: <p>code:</p>
  
  <pre><code>int main(int argc, char **argv)
  {
      int fd = open("test.txt", O_CREAT|O_RDWR, 0200|0400);
      if(fd == -1)
      {
          printf("failure to oepn");
          exit(-1);
      }
      int iRet = write(fd, "aaaaaaaaaa", 10);
  
      if(iRet == -1)
      {
          printf("failure to writer");
          exit(-1);
      }
      sleep(10);
      printf("You must remove");
      iRet = write(fd, "bbbbbbbbbb", 10);
  
      if(iRet == -1)
      {
          printf("failure to after writer");
          exit(-1);
      }
  
     exit(0);
  }
  </code></pre>
  
  <p>during the sleep(), you delete the test.txt, but the process write successful!why?
  if a log ”Singleton“ instance, you remove the file on the disk.write is successful, but you can get nothing.</p>
  
  <pre><code>class log
  {
  public:
      void loggerWriter(std::string str);
      int fd;
  };
  
  log::log(std::string filename):fd(-1)
  {
      fd = open(filename.c_str(), O_CREAT|)
      //...
  }
  
  log::loggerWriter(std::string str)
  {
      writer(fd, str.c_str(), str.size());
  }
  
  int main()
  {
      log logger("text.txt");
      //...
      //I want to know the text.txt the text.txt have delete on the disk or not.
      //if delete i can create another file to log. 
  }
  </code></pre>
  
  <p>"unlink" cann't solve this problem.</p>