# Close
> Close a file descriptor.
## Usage
```javascript
var close = require( '@stdlib/fs/close' );
```
#### close( fd, clbk )
Asynchronously closes a file descriptor, so that the file descriptor no longer refers to any file and may be reused.
```javascript
var openSync = require( '@stdlib/fs/open' ).sync;
var fd = openSync( __filename );
close( fd, done );
function done( error ) {
if ( error ) {
throw error;
}
}
```
#### close.sync( fd )
Synchronously closes a file descriptor.
```javascript
var openSync = require( '@stdlib/fs/open' ).sync;
var fd = openSync( __filename );
var err = close.sync( fd );
if ( err instanceof Error ) {
throw err;
}
```
## Notes
- The difference between this API and [`fs.closSync()`][node-fs] is that [`fs.closeSync()`][node-fs] will throw if an `error` is encountered (e.g., if given an invalid file descriptor) and this API will return an `error`.
## Examples
```javascript
var join = require( 'path' ).join;
var openSync = require( '@stdlib/fs/open' ).sync;
var close = require( '@stdlib/fs/close' );
var err;
var fd;
/* Sync */
fd = openSync( join( __dirname, 'package.json' ), 'r+' );
if ( fd instanceof Error ) {
console.error( fd.message );
} else {
err = close.sync( fd );
// returns undefined
if ( err instanceof Error ) {
console.error( err.message );
} else {
console.log( 'Synchronously closed file descriptor.' );
}
}
/* Async */
fd = openSync( join( __dirname, 'package.json' ), 'r+' );
if ( fd instanceof Error ) {
console.error( fd.message );
} else {
close( fd, done );
}
function done( error ) {
if ( error ) {
console.error( error.message );
} else {
console.log( 'Asynchronously closed file descriptor.' );
}
}
```
[node-fs]: https://nodejs.org/api/fs.html