I have only a very basic idea about linux system programming. I have not done any real projects using linux system programming. In my current company I do system admin type work, but I am more interested in Linux System Programming. I want to do some projects on my own, so that I could put those projects in my resume when I apply for jobs at another companies. Kindly tell me the whether there is any projects where I could learn more linux system programming by doing some real programming stuff.

Please note that I only have experience in C programming and not in Linux System Programming. But I know very basic things about linux system programming.


  • 1
    not a answer, but I recommend the APUE2e for starting to learn the Unix API Jan 28, 2011 at 10:30

2 Answers 2


C is fine for system programming. As a starting point you could take a look at the books from this questions. As system programming is a broad field, perhaps they give you a hint where you could start.

The ultimate project would definitely be the linux kernel, but it's hard as your first project.

A smoother entrance to the field would be, to rewrite some command line tools. Take ls or cat or some other command line tool, and try to rewrite it. Start with the most basic functionality of the command and then you can try to add more functionality over time. During this process you might get ideas to improve the existing tools or to do a complete new one on your own.

  • 3
    +1 for reimplementing existing tools. Writing a shell is excellent for learning - working with files, forking, etc. Jan 28, 2011 at 16:19

In your system admin type work, does some task you do either puzzle you (How does that work?) or irritate you (Shouldn't that work better/faster?)?

Find several of those tasks, identify the very basic feature that you don't understand, or that irritates or puzzles you. Try to implement the puzzling, irritating or slow feature in C.

You will get a more thorough education if you have something practical motivating you, and you will have a stopping point. When you've implemented your very basic feature in C, you can stop, evaluate what you've done, then pick another task that still puzzles you, or irritates you. In light of what you've learned, several tasks will now seem different than they did.

  • 1
    ...and as a side effect once you work on a few things and you learn some things you can rework the things you've implemented learning more in the process. This teaches you more by itself.
    – Pryftan
    Jan 27, 2018 at 23:38

Not the answer you're looking for? Browse other questions tagged .