Jaka jest praktyczna różnica, jeśli występuje, między stdin
a STDIN_FILENO
w C?Jaka jest różnica między stdin i STDIN_FILENO?
Odpowiedz
Interfejs. Tak jak wszyscy inni, stdin
to FILE *
zgodnie z definicją standardowej biblioteki c. Możesz używać niektórych interfejsów wyższego poziomu, takich jak fread
, fwrite
i fprintf
. Z drugiej strony, STDIN_FILENO
to tylko deskryptor pliku (prawie na pewno 0). Wykorzystuje to nieznacznie niższy poziom interfejsu, między innymi: read
i write
.
Żadna z odpowiedzi nie wspomina, że 'STDIN_FILENO' jest makrem zdefiniowanym w'
@KeithThompson dzięki, szukał tego! – KGCybeX
stdin
jest wskaźnikiem domyślnego pliku, do którego dostać wejście od nikogo innego niż standardowy w.
STDIN_FILENO
to domyślny standardowy plik wejściowy numer deskryptora który jest 0
. Jest to zasadniczo zdefiniowana dyrektywa do ogólnego użytku.
Z /usr/include/stdio.h
,
/* Standard streams. */
extern struct _IO_FILE *stdin; /* Standard input stream. */
extern struct _IO_FILE *stdout; /* Standard output stream. */
extern struct _IO_FILE *stderr; /* Standard error output stream. */
/* C89/C99 say they're macros. Make them happy. */
#define stdin stdin
#define stdout stdout
#define stderr stderr
Z /usr/include/unistd.h
/* Standard file descriptors. */
#define STDIN_FILENO 0 /* Standard input. */
#define STDOUT_FILENO 1 /* Standard output. */
#define STDERR_FILENO 2 /* Standard error output. */
Ex stdin
(_IO_FILE
zdefiniowano w /usr/include/libio.h
) jest dane struktury. STDIN_FILENO
to stała makr, która wskazuje na deskryptor pliku używany przez jądro.
#include <stdio.h>
#include <unistd.h>
void
stdin_VS_STDIN_FILENO(void)
{
printf("stdin->_flags = %hd\n", stdin->_flags);
printf("STDIN_FILENO : %d\n", STDIN_FILENO);
}
int
main(void)
{
stdin_VS_STDIN_FILENO();
return 0;
}
- 1. Jaka jest różnica między <stdin> i <STDIN>?
- 2. Jaka jest różnica między? : i ||
- 3. Jaka jest różnica między $ i $$?
- 4. Jaka jest różnica między Subtotal i BaseSubtotal?
- 5. Jaka jest różnica między DetachedCriteria i ICriteria
- 6. Jaka jest różnica między & # x00A0; i ?
- 7. Jaka jest różnica między lex i yacc
- 8. jaka jest różnica między dijit i dojo
- 9. Jaka jest różnica między Control.Select() i Control.Focus()?
- 10. Jaka jest różnica między System.Windows.Controls.Control i System.Windows.Forms.Control?
- 11. Jaka jest różnica między apletami i SWING?
- 12. Jaka jest różnica między session.commit() i session.flush()?
- 13. Jaka jest różnica między ImageView.setBackgroundResource i ImageView.setImageResource?
- 14. Jaka jest różnica między Konwertuj i parsuj?
- 15. Jaka jest różnica między JSP i JSTL?
- 16. Jaka jest różnica między Lazarus i CodeTyphon
- 17. Jaka jest różnica między crc32 i crc32b?
- 18. Jaka jest różnica między TypedArray.getInteger() i TypedArray.getInt()?
- 19. jaka jest różnica między ARM7 i ARM7s
- 20. Jaka jest różnica między http_build_str() i http_build_query()?
- 21. Jaka jest różnica między "CompletionStage" i "CompletableFuture"?
- 22. Jaka jest różnica między mock.patch.object (... i mock.patch (
- 23. Jaka jest różnica między GetBlobReference i GetBlobReferenceFromServer?
- 24. Jaka jest różnica między NSLayoutAttributeBaseline i NSLayoutAttributeBottom?
- 25. Jaka jest różnica między handlebar.js i handlebar.runtime.js?
- 26. Jaka jest różnica między innerText i outerText?
- 27. Jaka jest różnica między Json i Jsonp?
- 28. Jaka jest różnica między WCF i WPF?
- 29. Jaka jest różnica między runghc i runhaskell?
- 30. Jaka jest różnica między -hivevar i -hiveconf?
[Ciekawa dyskusja na ten temat] (http://www.rtems.com/ml/rtems-users/2011/march/msg00101.html). Być może powinieneś także zapytać, dlaczego 'fileno (stdin)' różni się od 'STDIN_FILENO'. – user7116
@ user7116 Twój link jest niestety martwy. –
Ten link działa http://www.rtems.org/ml/rtems-users/2011/march/thrd1.html#00101 – pixelbeat