关于linux下C标准输出的问题?
#include<stdio.h> int main() { write(stdout,"hahhh",6); return 0; } ./a.out运行,结果没有任何反应。。。 #include<stdio.h> int main() { write(1,"hahhh",6); return 0; }结果就在屏幕上输出hahhh了,为什么会这样?
他们不是一样的吗
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
详细的分析可参考http://my.oschina.net/gschen/blog/137953
谢谢!
很奇怪。能折腾这个问题的,应该会查资料了。。。。哈。
stdout是一个FILE指针
write的第一个参数是文件描述符,所以对应标准输出应该是STDOUT_FILENO
stdout是一个FILE指针
write的第一个参数是文件描述符,所以对应标准输出应该是STDOUT_FILENO
gcc编译时带上-Wall 参数,write的头文件是#include <unistd.h> .加上头文件和-Wall参数就知道为什么了。
passing argument 1 of 'write' makes integer from pointer without a cast [enabled by default]
正解
STDOUT_FILENO 不是 stdout
这个是File Descriptor