[英]Linux - why error message doesn't show up aftering calling write(2, “…”)?
我在Ubuntu 10.04 LTS下使用gcc版本4.4.3(Ubuntu 4.4.3-4ubuntu5)編譯了以下代碼。
user@ubuntu:~/doc$ cat simple_write.c
#include <unistd.h>
#include <stdlib.h>
int main()
{
if ((write(1, "Here is some data\n", 18)) != 18)
write(2, "A write error has occurred on file descriptor 1\n",46);
exit(0);
}
user@ubuntu:~/doc$ ./simple_write
Here is some data
有人可以向我解釋為什么第二個錯誤消息沒有打印出來嗎? 是否重定向到其他地方? 然后,如何使其顯示?
謝謝
第二條消息沒有顯示,因為第一個write()
成功write()
了18個字符。
為了演示,將!=
更改為==
。
write
的返回值為:
成功完成后,這些函數應返回實際寫入與fildes相關聯的文件中的字節數。
您要求它寫18個字節,它這樣做就返回18。將不會打印您的錯誤,因為18 != 18
為假。 也許您很困惑,因為\\n
實際上是Unixy系統上的一個字節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.