Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
113 views
in Technique[技术] by (71.8m points)

c - Why does 'write()' take a const buffer while 'read()' doesn't?

The signatures for read / write are below:

 ssize_t write(int fd, const void *buf, size_t count);

 ssize_t read(int fd, void *buf, size_t count);

Why doesn't read() also take a const void *? Does that mean it changes the value of buf?

question from:https://stackoverflow.com/questions/65947731/why-does-write-take-a-const-buffer-while-read-doesnt

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Because write() won't change the contents of the buffer, but only write it to the file.

On the other hand, read() will change its buffer (from what's in the file) so it had better not be const.

General rule, what changes isn't const.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...