2011-05-22 59 views
0

那么它可能会明显一些,但不是我(和它没有在文档中提到的):写系统调用停靠在NUL

int main(int argc, char** argv) { 
    char s[]= {'h','\0','l','0'}; 
    int fd=open("myfile.txt", O_RDWR|O_CREAT|O_APPEND,0644); 
    write(fd,s,4); 
    return 0; 
} 

只会写“H”的文件 - 所以nul在缓冲区终止write(),尽管被要求写过去吗?那我怎么写一个nul文件呢?

谢谢!

+0

当我运行你的代码,它的权利H10的文件,所以它不是在'\ 0'上停止,这是在Ubuntu natty – freethinker 2011-05-22 10:00:26

+0

你如何确保数据不存在?你在窗户上吗? – Mat 2011-05-22 10:02:40

+0

我在一个较旧的Ubuntu版本上试过这个 - 不会在Windows上运行。我打开文件,只看到一个H文件。所以你认为它可能取决于系统? – 2011-05-22 10:04:02

回答

0

已解决:pico显示h^@ 10 - 所以nul终于写完了 - 所以它是“WinSCP的内部文本编辑器”。对我来说仍然是一个谜。

(回答的提示中的注释 - 仍如果有人可以证实这一点对我来说,所以我可以100%肯定......)