We will run your program on x86 computers running Linux. We recommend that you use similar machines for development. Such machines are available in the Wean clusters. Additionally, several Linux servers (unix44.andrew.cmu.edu-unix49.andrew.cmu.edu) are available for remote login. If you have your own Linux system, you are welcome to use it for this project. Note, however, that we will test your code on the Andrew systems. Thus, you must make sure your code runs correctly on the Andrew Linux machines.
You must write your server in C or C++. You may only use the following libraries: libc, libpthread, and the Standard Template Library. (Please contact us if you want to use other libraries.) Your code must compile with gcc or g++. You might also consider using the -Wall flag to generate full warnings and help to debug.
To support concurrent access, you should use either select, or pthreads. Based on our experience, we believe that select will be easier. However, you are free to choose either method. Do not use other approaches, such as SIGIO, or POSIX asynchronous I/O (aio).
If you use a threaded implementations, you must use detached threads. Using joinable threads exhausts system resources, making life difficult for other users logged in to the same host.