Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

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.


share|improve this question
not a answer, but I recommend the APUE2e for starting to learn the Unix API –  xenoterracide Jan 28 '11 at 10:30
add comment

2 Answers

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.

share|improve this answer
+1 for reimplementing existing tools. Writing a shell is excellent for learning - working with files, forking, etc. –  André Paramés Jan 28 '11 at 16:19
add comment

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.

share|improve this answer
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.