簡體   English   中英

Linux-為什么在調用write(2,“…”)之后沒有顯示錯誤消息?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM