gpt4 book ai didi

linux - 当字节数写入标准输入或标准输出时,write() 系统调用的哪个参数在 if block 中被评估

转载 作者:太空宇宙 更新时间:2023-11-04 12:47:26 25 4
gpt4 key购买 nike

当字节数写入标准输入或标准输出时,在 if block 中评估 write() 系统调用的哪个参数。在下面的示例中(来自 Beginning Linux Programming);

if(write(1, "Here is some data\n", 18) != 18)
write(2, "Write error in file descriptor 1\n", 46);

我试图通过使字符串长于/短于 18 个字节来使 if 语句为假,但它仍然打印字符串“Here is some data”。仅当我将第三个参数从 18 更改为 17 或 19 时,才会评估第二个 write 语句。似乎 if 条件仅由第三个参数评估,因为它不应该是这种情况。请帮助我理解它。

最佳答案

我认为您是想问一个不同的问题,但我不确定它是什么。目前的答案是:全部。

所有要写的参数都必须被评估,所以函数可以被调用,所以可以进行比较。

我猜您可能会问:为什么更改字符串长度不会更改写入的字节数。那是因为 C 会很乐意让你读到字符串的末尾。如果指定要发送 18 个字节,则将发送 18 个,无论这意味着只发送字符串的一部分,还是读取“\n”后面的一些垃圾使其成为 18。

关于linux - 当字节数写入标准输入或标准输出时,write() 系统调用的哪个参数在 if block 中被评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38309294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com