#9 in Unix operating system books
Use arrows to jump to the previous/next product

Reddit mentions of Advanced UNIX Programming (2nd Edition)

Sentiment score: 3
Reddit mentions: 3

We found 3 Reddit mentions of Advanced UNIX Programming (2nd Edition). Here are the top ones.

Advanced UNIX Programming (2nd Edition)
Buying options
View on Amazon.com
or
    Features:
  • New
  • Mint Condition
  • Dispatch same day for order received before 12 noon
  • Guaranteed packaging
  • No quibbles returns
Specs:
Height9.1 Inches
Length7 Inches
Number of items1
Weight2.4691773344 Pounds
Width1.6 Inches

idea-bulb Interested in what Redditors like? Check out our Shuffle feature

Shuffle: random products popular on Reddit

Found 3 comments on Advanced UNIX Programming (2nd Edition):

u/osune · 12 pointsr/C_Programming

Hey,

I assume you have good grasp about the culture and ecosystem you want to work in by now. This means you're in a perfect situation to dig deeper.

My first advice would be to be more specific in your goal. Find a project which is interesting to you. This will help you to cut down the list of "things to learn", as you will concentrate on the tools the project uses.

In your tool belt should be at least:

    1. a programming language (including how to use the compiler, debugger)

    1. a build system suitable for the language

    1. a version control system

    1. a understanding for the platform you write code against

      Suitable answers can be:

    1. C , GCC and GDB

    1. GNU Make; as Cmake and Autotools generate Makefiles it is good to know the basics; it is mighty enough to support medium sized projects

    1. Git is what the cool kids use

    1. Linux and it's system calls / POSIX; your libc implementation

      This list is enough to keep you busy for a year easily.

      Here is a list of recommendations of resources which proved invaluable for me (based on the list above and more; this list contains free web resources and books):

    1. "The C programming Language", in my eyes the best book on C and pointers. It biggest drawback that it's a bit dated. Have a look at the different C standards (like C99/C11 etc) and look up whats new. Reference sites like this will normally mark features of newer versions. Read them for fun. For a more in depth look at pointers see Understanding and Using C Pointers. The different compiler options made sense to me first when I started to learn Make, this will come with time. No real recommendations for the debugger thou. I've learned by searching on the internet / documentation.

    1. the GNU Make manual is a great resource. But consider to have a look at Managing Projects with GNU Make, Third Edition which has a more practical approach and explains how to manage bigger projects.

    1. There is nothing better than the official Git Book. It covers everything, if something breaks your best bet is normally stackoverflow.
      Learn about GitFlow and the arguments against it. Write good commit messages. Understand different versioning schemes (https://semver.org/ ; http://calver.org/ ).

    1. man-pages, learn to love them (they deserve it). Where man-pages fall short is a clear explanation on why you might want to use an interface over the other. The best resource to fill this gap I found is The Linux Programming Interface. It covers nearly everything the operating system offers you, including background information. But you might want to get the e-book version as it is quite large/hard to search in paper. Getting to know your libc implementation, normally glibc, and its extensions is also important. Another good resource for some topics is Advanced Unix Programing, but it's clearly on the "further reading" list. Read it if you want to learn about "pseudo terminals" and how to be portable with other "Unixes".

    1. Misc: learn how to use the doxygen documentation tool

    1. As you mentioned in another comment that your goal is to work with the kernel directly: Linux Device Drivers is old, like grandpa old. But the core concepts it teaches still apply today.
      Unfortunately, apart from it, good resources on kernel programing are sparse. After working through this book your best bet are the drivers in mainline, the kernel documentation and google. Have a look at kernelnewbies for an introduction on how to get involved with mainline.

    1. Have a look at buildroot for an "easy" way to build custom systems for Qemu or your rasberrypi. Yocto is an alternative but can be quite intimidating starting out.

      Regarding your ideal schedule: I cannot answer this to be honest.

      /Rambling ahead/

      But: find a hobby project (e.g. implement a Z-machine) you want to realize in "a professional manner".
      What I mean by that is, strive to use all the tools you want to learn in a disciplined manner. Put your project out there on a public git host and assume you have real users who want to build your stuff on their own machines. Treat this project as your business card, don't be afraid but improve it constantly.

      There is always something you didn't know. You will always find things to improve, even it's only a improvement from a purist standpoint. But your "hobby" project is not done as soon as it works. It's a test bed, a record of what you've learned. It is a reference point for the future you to come back.

      Read blogs about development. Learn a object oriented language and see how you can apply these concepts in C (encapsulation, "object orientated design in C without classes"). Learn a functional language just to see something completely different (Haskell / a scheme / Common Lisp ). Realize that it's sometimes just a bad idea to use C for some projects / parts of a project.

      Consider to always learn the "core tool" first and then its "high level abstraction tool/helper". Eg: learn the basic usage of the gdb/git comandline tool before you dive into a graphical wrapper. Depending on your environment you wont have access to the wrapper, but the cli tool will be (hopefully) there. For example I use emacs (i know vim too) for git nowadays, but I'm not lost if I don't have access to it. Also it is always good to understand the core concepts.

      Read Linux Weekly News (access to the archive is free), have an eye on the Linux Kernel Mailing List. Bootlin.com has a ton of great learning material regarding embedded Linux, Driver programming, Yocto and buildroot.

      Don't be afraid to jump into an IRC channel / a mailing list, but be sure to do your homework first. They'll eat you alive if you didn't. (see http://www.catb.org/~esr/faqs/smart-questions.html)

      Be open but do your own research. Inform yourself on the pro and cons of everything. Don't believe in "silver bullets".

      It will be a steep learning curve in the beginning, but with every step you take it gets easier.

      Hope this helps you on your journey.

      Personal Info/Disclaimer: I'm a "professional" (i get paid) "embedded Linux" developer, writing system programs and kernel drivers for about 8 years. I still learn stuff every day. Recommendations are heavily based on my own experience and what I use still on a day to day basis. Regarding on what you want to do this list may lack information.

      edits: grammer, formatting, multiple additions in the first 2h
u/magkopian · 4 pointsr/linuxquestions

Linux or *nix programming in general basically means C programming using system calls. If you are interested in this kind of stuff one of the best books I've ever read on the subject was the Advanced UNIX Programming by Marc Rochkind. Obviously, you have to have a fairly strong C background in order to read this book, but if you want to get into Linux programming this is one of the best books out there in my opinion.

Shell scripting is fine to know (and probably you should) but that doesn't count as Linux programming, the shell is just a tool targeted to the user aka sysadmin to help them manage their system more effectively.

u/[deleted] · 2 pointsr/programming

haven't read that one, but this one is pretty good too.