Reference

freebsd::fd_up(3)

own a file descriptor

NAME

freebsd::fd_up – own a file descriptor

LIBRARY

library “libutil++”

SYNOPSIS

#include <libutil++.hh>

class freebsd::fd_up {

fd_up();

fd_up(int fd);

fd_up(fd_up &&other);

~fd_up();

int

get();

int

release();

void

reset(int newfd = -1);

fd_up &

operator=(fd_up &&other);

fd_up &

operator=(int fd);

explicit operator bool();

operator int();

};

DESCRIPTION

Each instance of this class owns a file descriptor. This class is patterned on std::unique_ptr, but instead of owning a pointer to an object, this class owns a file descriptor. The currently-owned file descriptor is disposed by invoking close(2) when an instance of this class is destroyed. The currently-owned file descriptor is also disposed if it is replaced by the reset() method or assignment operators.

The get() method returns the current file descriptor value while retaining ownership.

The release() method relinquishes ownership of the current file descriptor and returns the value of the previously-owned file descriptor.

The explicit bool conversion operator permits testing the validity of an object. The operator returns true if the instance owns a valid file descriptor.

The implicit int conversion operator permits passing an instance of this class directly as an argument to existing functions which expect a file descriptor.

EXAMPLES

freebsd::fd_up fd(open("/dev/null", O_RDWR));
if (!fd)
	err(1, "open");
write(fd, "test", 4);
// `fd' is implicitly closed on destruction

SEE ALSO

close(2)