C言語でシステムコールプログラミングをしようとしています。[*1]

http://www.atmarkit.co.jp/ait/articles/1112/13/news117.html
そこで、上のサイトを参考に(正確にはコピペ)プログラムを実行しようとしました。

#include <unistd.h>
#include <fcntl.h>
int
main(void)
{
    int fdi, fdo;
    char b[1];
    fdi = open("in", O_RDONLY);
    fdo = open("out", O_WRONLY);
    while (0 < read(fdi, b, 1)) {
        write(fdo, b, 1);
    }
    close(fdi);
    close(fdo);
}

上のプログラムのopenのところでエラーになってしまいます。
なにか、多分インクルードファイルが少ないのだと思うのですがどのように解決したらいいですか。

*1: 正確には、コンパイラはC++ですがCの機能だけを使う予定です。

"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: ディレクトリ `/home/aaa/NetBeansProjects/C' に入ります
"/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/c_____
make[2]: ディレクトリ `/home/aaa/NetBeansProjects/C' に入ります
mkdir -p build/Debug/GNU-Linux-x86/_ext/986599228
rm -f "build/Debug/GNU-Linux-x86/_ext/986599228/02.o.d"
g++    -c -g -MMD -MP -MF "build/Debug/GNU-Linux-x86/_ext/986599228/02.o.d" -o build/Debug/GNU-Linux-x86/_ext/986599228/02.o /home/aaa/NetBeansProjects/C/問題4-X/02.cpp
mkdir -p dist/Debug/GNU-Linux-x86
g++     -o dist/Debug/GNU-Linux-x86/c_____ build/Debug/GNU-Linux-x86/_ext/986599228/01.o build/Debug/GNU-Linux-x86/_ext/986599228/02.o 
build/Debug/GNU-Linux-x86/_ext/986599228/02.o: 関数 `main' 内:
/home/aaa/NetBeansProjects/C/問題4-X/02.cpp:11: `main' が重複して定義されています
build/Debug/GNU-Linux-x86/_ext/986599228/01.o:/home/aaa/NetBeansProjects/C/問題4-X/01.cpp:17: ここで最初に定義されています
collect2: error: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-Linux-x86/c_____] エラー 1
make[2]: ディレクトリ `/home/aaa/NetBeansProjects/C' から出ます
make[1]: *** [.build-conf] エラー 2
make[1]: ディレクトリ `/home/aaa/NetBeansProjects/C' から出ます
make: *** [.build-impl] エラー 2

ビルド FAILED (終了値2, 合計時間: 213ms)