diff --git a/sys/posix/include/unistd.h b/sys/posix/include/unistd.h
new file mode 100644
index 0000000000000000000000000000000000000000..a051e8a14433280eff675ee9d000c6f636046f1f
--- /dev/null
+++ b/sys/posix/include/unistd.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2013 Freie Universität Berlin
+ *
+ * This file subject to the terms and conditions of the GNU Lesser General
+ * Public License. See the file LICENSE in the top level directory for more
+ * details.
+ */
+
+/**
+ * @addtogroup  posix
+ * @{
+ */
+
+/**
+ * @file    unistd.h
+ * @brief   standard symbolic constants and types
+ * @see     <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/unistd.h.html">
+ *              The Open Group Base Specifications Issue 7, <unistd.h>
+ *          </a>
+ *
+ * @author  Freie Universität Berlin
+ * @author  Martin Lenders <mlenders@inf.fu-berlin.de>
+ */
+#ifndef _UNISTD_H
+#define _UNISTD_H
+
+/**
+ * @brief   Close a file descriptor.
+ * @details shall deallocate the file descriptor indicated by *fildes*. To
+ *          deallocate means to make the file descriptor available for return
+ *          by subsequent calls to open() or other functions that allocate file
+ *          descriptors. All outstanding record locks owned by the process on
+ *          the file associated with the file descriptor shall be removed (that
+ *          is, unlocked).
+ *
+ * @see <a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html">
+ *          The Open Group Base Specification Issue 7, close
+ *      </a>
+ *
+ * @param[in]   fildes  The file descriptor to the file which is to close.
+ * @return  Upon successful completion, 0 shall be returned; otherwise, -1
+ *          shall be returned and errno set to indicate the error.
+ */
+int close(int fildes);
+
+/**
+ * @}
+ */
+#endif /* _UNISTD_H */
diff --git a/sys/posix/unistd.c b/sys/posix/unistd.c
new file mode 100644
index 0000000000000000000000000000000000000000..0030a0d44684315ef19394ebe9d0a65f4b81f2ee
--- /dev/null
+++ b/sys/posix/unistd.c
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2013 Freie Universität Berlin
+ *
+ * This file subject to the terms and conditions of the GNU Lesser General
+ * Public License. See the file LICENSE in the top level directory for more
+ * details.
+ */
+#include <errno.h>
+
+#include "fd.h"
+#include "unistd.h"
+
+int close(int fildes)
+{
+    fd_t *fd_obj = fd_get(fildes);
+
+    if (!fd_obj) {
+        errno = EBADF;
+        return -1;
+    }
+
+    if (fd_obj->close(fd_obj->fd) < 0) {
+        errno = EIO;    // EINTR may not occur since RIOT has no signals yet.
+        return -1;
+    }
+
+    fd_destroy(fd_obj->fd);
+
+    return 0;
+}