In this homework, I have three components: server, client, and executor. For server, I use `epoll` to ensure its ability to work with multiple clients. For client, I also use `epoll`, so that it can take care of the feedbacks from server as well as standard inputs at the same time. At the end, I make the executor slightly more complicated, which can execute the given commands recursively from server.