C中的stdin
与STDIN_FILENO
之间的实际区别是什么?stdin和STDIN_FILENO有什么区别?
回答
接口。像其他人一样,stdin
是由标准c库定义的FILE *
。您可以使用fread
,fwrite
和fprintf
等一些更高级别的接口。另一方面,STDIN_FILENO
只是一个文件描述符(几乎可以肯定是0)。这通过诸如read
和write
之类的使用略微较低级别的接口。
没有一个答案提到'STDIN_FILENO'是'
@KeithThompson谢谢,正在寻找这个! – KGCybeX 2016-10-20 17:34:13
stdin
是用于从没有比标准等中获得输入默认文件指针。
STDIN_FILENO
是默认的标准输入文件描述符数是0
。它基本上是一个通用的定义指令。
从/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
从/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. */
例,stdin
(_IO_FILE
在/usr/include/libio.h
定义)是一个结构的数据。 STDIN_FILENO
是一个宏常量,它指向内核使用的文件描述符。
#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. Ruby中STDIN和$ stdin有什么区别?
- 2. python中的stdin和sys.argv有什么区别?
- 3. 有什么区别`和$(Bash中有什么区别?
- 4. ==和===有什么区别?
- 5. ==和===有什么区别?
- 6. 有什么区别? :和||
- 7. ==和===有什么区别?
- 8. '=='和'==='有什么区别?
- 9. `&`和`ref`有什么区别?
- 10. 有什么区别:。!和:r!?
- 11. | 0和~~有什么区别?
- 12. Appender和〜有什么区别?
- 13. xtype和别名有什么区别?
- 14. 有什么区别
- 15. 有什么区别
- 16. 有什么区别?
- 17. 有什么区别?
- 18. 有什么区别?
- 19. 有什么区别
- 20. 有什么区别?
- 21. 有什么区别?
- 22. 有什么区别
- 23. 有什么区别
- 24. Microsoft.AspNet.WebApi.OData和Microsoft.Data.OData和Microsoft.AspNet.OData有什么区别?
- 25. Viterbi CYK和Probabilistic CYK算法有什么区别,有什么区别吗?
- 26. Erlang的Ports和RPC有什么区别?
- 27. debug.write和Trace.write有什么区别?
- 28. LocalContainerEntityManagerFactoryBean和LocalEntityManagerFactoryBean有什么区别?
- 29. 数组和ArrayList有什么区别?
- 30. URI.escape和CGI.escape有什么区别?
[关于该主题的有趣讨论](http://www.rtems.com/ml/rtems-users/2011/march/msg00101.html)。也许你还应该问为什么'fileno(stdin)'与'STDIN_FILENO'不同。 – user7116 2013-02-27 02:50:00
@ user7116您的链接已遗失。 – 2014-02-27 06:13:51
此链接的作品http://www.rtems.org/ml/rtems-users/2011/march/thrd1.html#00101 – pixelbeat 2014-03-19 01:10:48