Close function not recognized - C ++

I have the following code snippet in a file called RaftLog.cc :

 #include <algorithm> #include <fcntl.h> #include <sys/stat.h> namespace LogCabin { namespace Server { namespace RaftConsensusInternal { namespace FilesystemUtil = Storage::FilesystemUtil; namespace { bool fileToProto(const std::string& path, google::protobuf::Message& out) { int fd = open(path.c_str(), O_RDONLY); if (fd == -1) return false; else close(fd); FilesystemUtil::FileContents file(path); // more code down here, not useful to the problem. 

However, when I compile, I have:

 build/Server/RaftLog.cc: In function 'bool LogCabin::Server::RaftConsensusInternal::{anonymous}::fileToProto(const string&, google::protobuf::Message&)': build/Server/RaftLog.cc:43:17: error: 'close' was not declared in this scope build/Server/RaftLog.cc: In function 'void LogCabin::Server::RaftConsensusInternal::{anonymous}::protoToFile(google::protobuf::Message&, const string&)': build/Server/RaftLog.cc:76:13: error: 'close' was not declared in this scope In file included from ./Server/RaftConsensus.h:17:0, 

I do not know why the close() function is not included in the #include <fcntl.h> . Can someone please help me? Also let me know if I should add more code.

+8
c ++ c unix
source share
2 answers

You need to include the unistd.h header file if you call the close function

 #include <unistd.h> 

Use fopen/fclose , fdopen/close pair

+14
source share

In Visual Studio 2015

 #include <corecrt_io.h> 

seems to work!

0
source share

All Articles