If I google man open, it shows
man open
int open(const char *pathname, int flags);
implying that fd is an int. But, if I look at man p
man p