Sự khác biệt thực tế, nếu có, giữa stdin
và STDIN_FILENO
trong C?Sự khác nhau giữa stdin và STDIN_FILENO là gì?
Trả lời
Giao diện. Giống như mọi người khác đã nói, stdin
là FILE *
như được định nghĩa bởi thư viện chuẩn c. Bạn có thể sử dụng một số giao diện cấp cao hơn như fread
, fwrite
và fprintf
. Mặt khác, STDIN_FILENO
chỉ là một bộ mô tả tập tin (gần như chắc chắn là 0). Điều này sử dụng giao diện cấp thấp hơn một chút thông qua số lượt thích là read
và write
.
Không có câu trả lời nào đề cập đến 'STDIN_FILENO' là một macro được định nghĩa trong '
@KeithThompson cảm ơn, đang tìm kiếm điều này! – KGCybeX
stdin
là một con trỏ FILE mặc định dùng để lấy đầu vào từ không ai khác hơn tiêu chuẩn trong.
STDIN_FILENO
là mặc định tiêu chuẩn tập tin đầu vào số mô tả đó là 0
. Về bản chất nó là một chỉ thị được định nghĩa để sử dụng chung.
Từ /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
Từ /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
quy định tại /usr/include/libio.h
) là một cấu trúc dữ liệu. STDIN_FILENO
là một hằng số vĩ mô, trỏ đến một bộ mô tả tập tin được sử dụng bởi hạt nhân.
#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. Sự khác nhau giữa WPF và WinForms là gì?
- 2. Sự khác nhau giữa JavaScript và Java là gì?
- 3. Sự khác nhau giữa ODBC và OleDB là gì?
- 4. Sự khác nhau giữa SGML và XML là gì?
- 5. Sự khác nhau giữa DefaultSelenium và RemoteWebDriver là gì?
- 6. Sự khác nhau giữa RMI và Corba là gì?
- 7. Sự khác nhau giữa scgi và wsgi là gì?
- 8. Sự khác nhau giữa wsHttpBinding và ws2007HttpBinding là gì?
- 9. Sự khác nhau giữa Pingback và Trackback là gì?
- 10. Trong Python, sự khác nhau giữa ".append()" và "+ = []" là gì?
- 11. Sự khác nhau giữa AxInterop và Interop là gì?
- 12. Sự khác nhau giữa CellClick và CellMouseClick là gì?
- 13. Sự khác nhau giữa .bashrc, .bash_profile và .environment là gì?
- 14. Sự khác nhau giữa JSP và Facelets là gì?
- 15. Sự khác nhau giữa hg quên và hg là gì?
- 16. Sự khác nhau giữa GDI và GDI + là gì?
- 17. Sự khác nhau giữa đá quý và plugin là gì?
- 18. Sự khác nhau giữa metaClass.methods và metaClass.metaMethods là gì?
- 19. Sự khác nhau giữa kEND và $ end là gì?
- 20. Sự khác nhau giữa java và jsp là gì?
- 21. Sự khác nhau giữa Application.Run() và Form.ShowDialog() là gì?
- 22. Sự khác nhau giữa -0 và 0 là gì?
- 23. Sự khác nhau giữa HTTP 1.0 và 1.1 là gì?
- 24. Sự khác nhau giữa java.lang.Math và java.lang.StrictMath là gì?
- 25. Sự khác nhau giữa " " và "" là gì?
- 26. Sự khác nhau giữa Spring BeanFactoryAware và ApplicationContextAware là gì?
- 27. sự khác nhau giữa SCRIPT_FILENAME và SCRIPT_NAME là gì?
- 28. Sự khác nhau giữa JSP và JSTL là gì?
- 29. Sự khác nhau giữa JSF và Facelets là gì?
- 30. Sự khác nhau giữa javax.inject.Inject và com.google.inject.Inject là gì?
[Thảo luận thú vị về chủ đề] (http://www.rtems.com/ml/rtems-users/2011/march/msg00101.html). Có lẽ bạn cũng nên hỏi tại sao 'fileno (stdin)' khác với 'STDIN_FILENO'. – user7116
@ user7116 Liên kết của bạn không may đã chết. –
Liên kết này hoạt động http://www.rtems.org/ml/rtems-users/2011/march/thrd1.html#00101 – pixelbeat