Dbus is Linux specific, right, whereas most other Inter process communications - pipes, sockets, shared mem (everything I vaguely remember from the Advanced Prog Unix Bible) is posix and implemented on BSDs, Solaris, even Windows?
I've referenced this behemoth a bit and it could be helpful if you really want to get into the thick of things.
Advanced Programming in the Unix Environment by Stevens Also the best book for everything else.
Geany might be a friendly alternative to VS. Otherwise GCC-G++ and make files are your friend. A decent book to read on how to utilize the power of Linux with c/c++ is Advanced Programming in the UNIX Environment :
https://www.amazon.com/Advanced-Programming-UNIX-Environment-3rd/dp/0321637739
It will teach you about headers you won't find on Windows and how to program the whole operating system using c. But this can always be extended to c++ since c++ is a superset of c.��
Assuming you're using Linux/Unix/BSD, this book will be invaluable: http://www.amazon.com/Advanced-Programming-UNIX-Environment-Edition/dp/0321637739
To start with, read up on select(), as that will be your friend. Doing something like this will be really tricky to get right.
Advanced Programming in the UNIX Environment is a great book to go through if you want to learn systems programming.
yeah ncurses is what you use if you want to draw ascii on the screen and keep it in position, and control where the cursor sits at all times
for linux terminal, make a loop that directly listens to input and respond to the input by making system calls - that's the most direct and simple (if you haven't done that yet)
if you haven't tried making a simple text based adventure game, it fits into this category of reading structured text input and responding
or for a more complex possibility, going the socket server route and emulating terminal input is a lot more advanced
if you're playing with systems level unix stuff, a good overall book with lots of examples to try is:
https://www.amazon.com/Advanced-Programming-UNIX-Environment-3rd/dp/0321637739
working thru the examples in:
https://www.amazon.com/Advanced-Programming-UNIX-Environment-3rd/dp/0321637739
might be a good start on systems level programming in C in general. most of it isn't explicitly kernel development, but if you haven't done any systems level stuff, it might be good to learn that level of things first. i have done only minimal actually-within-the-kernel work, so i can't speak too much to below this layer, though.
Backend is more about solving problems about data, streams, and other forms of communication. It is necessary to learn a framework, but it's not like front end where React === career.
If you want a full-stack career at a small-medium sized company then you only need to learn the basics of API design, and different patterns that suite web services. However, if you want to be a true backend dev that can handle anything and everything, then you should read these:
c or c++ is the right place to be for really low level stuff on unix
pick up the "unix bible" (https://smile.amazon.com/Advanced-Programming-UNIX-Environment-3rd/dp/0321637739) and try examples in all the different systems routines
for example make a socket server and something multithreaded with mutexes and conditionals and use unix messaging and global shared memory, play with signals, etc etc
try writing a kernel plugin of some sort
I’m referring to this: https://www.amazon.com/Advanced-Programming-UNIX-Environment-3rd/dp/0321637739 . I may give that playlist a try though!
yea, Windows is pretty much useless unless you are at a school that is going to push you through multiple (4+) C#/WPF development classes.
Otherwise, Linux has MASSIVE advantages over Windows, so everything you create will be a *nix based OS. There might be something new that pops up in the next couple of years but RedHat is super duper strong. You should start learning about shared object files, ELF (Executable and Linkable Format), and just the general ecosystem. It is a rabbit hole so try to balance life and studying; however, if there is any time to explore Linux it's when you are an EE student in college. Also, never switch your major.
Read this before you graduate: https://www.amazon.com/Advanced-Programming-UNIX-Environment-3rd/dp/0321637739
If you want to be a hardcore coder, then take as many CS/CE classes that you can. If security interests you then double major in math, you will thank me later.
generally recommended for unix systems programming, tho i'd go with the more specific links the others have dropped first
https://www.amazon.com/Advanced-Programming-UNIX-Environment-3rd/dp/0321637739/
if you're going to be working on low level things in a unix environment, then consider poking around with come C tutorials and working through the examples in
https://www.amazon.com/Advanced-Programming-UNIX-Environment-3rd/dp/0321637739/
Maybe consider searching for books, papers, websites, documents, etc, on design, implementation and programming of: operating systems, device drivers, data base management systems, basic/fundamental networking and server-side software, and basic/fundamental software in general. Consider also books on unix/linux programming.
This is sort of vague, but it is because there is a lot of room here. Some books for example:
I haven't read most of these. I bet some are outdated. Even if they are, you can use the book, its contents, authors, and stuff around them, to find more up to date materials. Some of these, even outdated, will teach you useful stuff. These books aren't about C itself. They're about programming some other thing and they either use C or they will teach you concepts that you'll be able to apply directly to your C programming.
A lot of programming is about coding something "outside" software systems for other programmers and/or advanced users (hehe). For example, consider looking for digital image processing books, algorithms, numerical methods, etc.
I could put more books in here. I won't though. The general idea is that there isn't much substance without context in your programming. It's a good idea to be programming something and see what comes up in there. Things will make themselves needed as you read through stuff.
Although it's non-C, you could take books on C++ and also on Assembly language programming.
Consider also that C is extremely boring. Most of the interesting stuff that is put together with C that makes C programming interesting has little to do with C. It's more about "the system". On that line of thinking, start looking for things about "the systems" you use. A good point to start is to learn about advanced topics about how, for example, linux offers services to programs and how you can access those services through your C programming (the linux programming interface book is a start on that). I guess a lot of what you want to learn is in here. Another thing to consider here is your linker/loader/compiler/assembler.
I'm a big fan of programming more on the applications side nowadays, although I barely write any code (math student here during phd focusing on other things right now). Using computer graphics as a substrate to practice C programming, algorithms, data structures, parallel programming, numerical simulations, computational geometry, etc, is great IMO. It also is one of the good reminders of why we're doing all of this computation stuff.
For C, you really should read these ones,
Advanced Programming in the UNIX Environment
Unix Network Programming, Volume 1: Sockets Networking
UNIX Network Programming, Volume 2: Interprocess Communications
Design and Implementation of the FreeBSD Operating System
It should do to keep you busy for a while. :)
C hasn't changed all that much in the pat 17 years from C99, so anything published past then is a pretty safe bet to be "modern". Advanced programming in the unix environment is agood book, as is expert c, and essentially anything off of this list from the intermediate and above sections. Looking at code is always a great idea when it comes to learning "idiomatic C". I posted this compilation of books, articles, and example FOSS code bases that was well recieved, so maybe take a look at that also.
Big read, but I recommend this book: http://www.amazon.com/Advanced-Programming-UNIX-Environment-Edition/dp/0321637739
Here you go: Advanced Programming UNIX Environment Edition.
Advanced Programming in the UNIX Environment, 3rd Edition
https://www.amazon.com/Advanced-Programming-UNIX-Environment-3rd/dp/0321637739