我在下面写了代码
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main() {
int fd = 3;
char c[100] = "Testing\n";
ssize_t nbytes = write(fd, (void *) c, strlen(c));
return 0;
}
编译/链接,并执行
$ ./io
$ ./io 3> io_3.txt
第一行没有输出。第二行给了我io_3.txt
包含Testing
. 这都是预期的行为(我猜)。
即使在我的测试中它产生了预期的输出,我也不确定是否为了避免潜在的问题、未定义的行为等,我应该在第一个之前做任何事情write
,比如检查是否fd=3
正在使用(在这种情况下,如何...这可能适用),如果它是适当的开放等。
write
出于同样的原因,我不确定是否应该在 last 之后执行一些操作。
也许我所做的方式是“无风险的”,唯一的潜在问题是没有写入任何内容,我可以通过检查nbytes
... 我不知道的值来检测。
欢迎任何澄清。