Really, all you want is for the close(int fileHandle) to be managed for you, right? Why not create a simple c++ class with a destructor that calls close() for you? I think this is the behavior you are looking for.
std::shared_ptr, and friends only deal with heap pointers created with new, and will call delete ptr, not what you are looking for here.
Edit: Mr. Fernandes makes a good point. shared_ptr<> manages reference counting for you, so using it with a custom deleter for an opaque handle from a c lib call (e.g. file handle) is a very reasonable thing to do, if just a tad tricky for other team members to follow. It also directly answer's OP's question.
Here's an interesting discussion on the topic from Herb Sutter's web site.