title: Debugging open() command call with truss
body: <p>Using <code>truss -t'open' $(program_call)</code> I get:</p>
  
  <pre><code>open("command.txt", O_RDONLY|O_NONBLOCK)      = 5
  response FIFO file descriptor = -1
  // Open call was literally sandwiched between print commands, but its not here?
  response FIFO file descriptor = 9
  open("response.txt", O_WRONLY|O_NONBLOCK)     Err#6 ENXIO
  response.txt: No such device or address
  </code></pre>
  
  <p>The thing is, I initialized the file descriptor to -1, so I KNOW that the open call must have succeeded because it changed the value of the variable. The file descriptor is literally initialized to -1, then somehow gets changed to 9 in the open command call (otherwise the program would end there) but yet the open call does NOT show up in the <code>truss</code> call, and the computer does not recognize it as being open.</p>
  
  <p>Some code:</p>
  
  <pre><code>if ((outfd = open(CMD_FIFO_NAME, O_WRONLY | O_NONBLOCK)) == -1) {
      fprintf(stderr, "Client: Failed to open %s FIFO.\n", CMD_FIFO_NAME);
      exit(1);
  }
  printf("RESP_FIFO FILE DESCRIPTOR: %d\n", infd);
  /* Open the response FIFO for non-blocking reads. */
  if ((infd = open(RESP_FIFO_NAME, O_RDONLY | O_NONBLOCK)) == -1) {
      fprintf(stderr, "Client: Failed to open %s FIFO.\n", RESP_FIFO_NAME);
      exit(1);
  }
  else printf("RESP_FIFO FILE DESCRIPTOR: %d\n", infd);
  </code></pre>