We may earn an affiliate commission when you visit our partners.
Christopher Hart

The Linux family of operating systems is one of the most popular platforms to deploy modern applications on. This course will teach you how to interact with Linux operating systems in the C programming language.

Read more

The Linux family of operating systems is one of the most popular platforms to deploy modern applications on. This course will teach you how to interact with Linux operating systems in the C programming language.

Whether you are writing an ultra-low latency trading algorithm for a high frequency trading firm, device drivers for an embedded system, or anything in between, modern software applications will often be developed on the Linux operating system. In this course, Linux Systems Programming, you'll learn how to interact with various aspects of the Linux operating system when developing software in the C programming language. First, you’ll explore how to create, read, and write files and directories through a variety of different means. Next, you’ll discover how to interact with the inputs and outputs of Linux software, such as command line arguments, environment variables, pipes, and signals. Finally, you’ll learn how to control access to files and directories through permissions and user accounts. When you’re finished with this course, you’ll have the skills and knowledge of Linux systems programming with the C programming language to confidently develop C-based applications on Linux operating systems in addition to a more wholistic understanding of how the Linux operating system functions.

Enroll now

What's inside

Syllabus

Course Overview
Accessing Files
Managing Files and Directories
The Command Line, the Environment, and Time
Read more
Processes and Pipes
Controlling Access, Identity, and Permissions
Mastering Signals

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops skills and knowledge that are core for developing applications on the Linux operating system
Develops skills and knowledge that are highly relevant to software development and engineering
Useful for personal growth for learners of all skill levels
Taught by recognized experts in Linux systems programming
Covers operating system fundamentals that are universal across industries
Taught by Christopher Hart, who has experience in teaching Linux systems programming

Save this course

Save Linux Systems Programming to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Linux Systems Programming with these activities:
Review your notes from the course on Linux systems programming
Refresh your memory on the key concepts covered in the course.
Browse courses on Review
Show steps
  • Gather your notes from the course.
  • Review the notes and make sure you understand the concepts.
  • Make a note of any questions or areas where you need clarification.
Attend a Linux user group meeting
Connect with other Linux enthusiasts and learn from their experiences.
Show steps
  • Find a local Linux user group.
  • Attend a meeting.
  • Introduce yourself and share your interests.
  • Participate in discussions.
Solve a series of exercises to practice using different Linux system calls
Gain proficiency in using Linux system calls through regular practice.
Show steps
  • Find a set of exercises or problems that focus on using Linux system calls.
  • Solve the exercises or problems.
  • Check your solutions against the expected output.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Practice using file operations on the command line
Reinforce your understanding of file operations by practicing on the command line.
Browse courses on Files
Show steps
  • Create a new directory.
  • Create a new file in the directory.
  • Write some text to the file.
  • Read the text from the file and display it on the screen.
  • Delete the file and directory.
Follow a tutorial on writing device drivers in Linux
Develop the skills necessary to write your own device drivers for Linux systems.
Browse courses on Device Drivers
Show steps
  • Find a tutorial on writing device drivers for Linux.
  • Follow the tutorial step-by-step.
  • Write your own simple device driver.
  • Test your device driver.
Contribute to a Linux open source project
Make a valuable contribution to the Linux community while enhancing your skills.
Browse courses on Open Source
Show steps
  • Find an open source Linux project that interests you.
  • Identify an area where you can contribute.
  • Make your contribution.
  • Submit your contribution for review.
Write a blog post about a challenging concept in Linux systems programming
Deepen your understanding of a challenging concept by writing a blog post about it.
Show steps
  • Choose a challenging concept in Linux systems programming.
  • Research the concept thoroughly.
  • Write a blog post that explains the concept clearly and concisely.
  • Publish your blog post.
Design and implement a system to monitor system resources on a Linux server
Apply your knowledge of Linux systems programming to solve a real-world problem.
Browse courses on System Monitoring
Show steps
  • Define the requirements for the system.
  • Design the system architecture.
  • Implement the system.
  • Test the system.
  • Deploy the system on a Linux server.

Career center

Learners who complete Linux Systems Programming will develop knowledge and skills that may be useful to these careers:
Software Developer
Software Developers design, develop, and maintain software applications. They work with a variety of programming languages and tools to create applications that meet the needs of users. Software Developers must have a strong understanding of both software development and the programming languages and tools they use. This course helps equip Software Developers with the necessary skills to be successful in their roles. The focus on Linux operating systems and the C programming language provides foundational skills that are highly applicable to software development work.
Web Developer
Web Developers design, develop, and maintain websites and web applications. They work with a variety of programming languages and tools to create websites and applications that meet the needs of users. Web Developers must have a strong understanding of both web development and the programming languages and tools they use. This course helps equip Web Developers with the necessary skills to be successful in their roles. The focus on Linux operating systems and the C programming language provides foundational skills that are highly applicable to web development work.
Software Architect
Software Architects design and develop software systems. They work with a variety of stakeholders to define the requirements for software systems and to ensure that the systems are designed and developed to meet those requirements. Software Architects must have a strong understanding of both software development and architecture, as well as a variety of programming languages and tools. This course helps equip Software Architects with the necessary skills to be successful in their roles. The focus on Linux operating systems and the C programming language provides foundational skills that are highly applicable to software architecture work.
Security Analyst
Security Analysts design, implement, and maintain security measures to protect computer systems and networks from unauthorized access, use, disclosure, disruption, modification, or destruction. They work to ensure that information is kept confidential, integrity is maintained, and availability is assured. Security Analysts must have a strong understanding of both security and networking, as well as a variety of tools and technologies. This course helps equip Security Analysts with the necessary skills to be successful in their roles. The focus on C programming skills can help prepare learners to work with security tools written in C.
Operating Systems Engineer
Operating Systems Engineers design, implement, and maintain operating systems. They work with a variety of tools and technologies to ensure that operating systems are reliable, secure, and efficient. Operating Systems Engineers must have a strong understanding of operating systems, as well as a variety of programming languages and tools. This course helps equip Operating Systems Engineers with the necessary skills to be successful in their roles. Through hands-on experience with Linux operating systems and the C programming language, students develop foundational skills that are highly applicable to operating systems work.
Network Administrator
Network Administrators design, implement, and maintain computer networks. They work to ensure that networks are reliable, secure, and efficient. Network Administrators must have a strong understanding of networking technologies, as well as a variety of tools and technologies. This course helps equip Network Administrators with the necessary skills to be successful in their roles. Through hands-on experience with Linux operating systems and the C programming language, students develop foundational skills that are highly applicable to network administration work.
IT Manager
IT Managers oversee the planning, implementation, and maintenance of computer systems and networks. They work with a variety of stakeholders to ensure that IT systems meet the needs of the organization. IT Managers must have a strong understanding of both IT and business, as well as a variety of tools and technologies. This course helps equip IT Managers with the necessary skills to be successful in their roles. By gaining experience with Linux operating systems and the C programming language, students taking this course develop foundational skills that are highly applicable to IT work.
Information Security Analyst
Information Security Analysts design, implement, and maintain security measures to protect computer systems and networks from unauthorized access, use, disclosure, disruption, modification, or destruction. They work to ensure that information is kept confidential, integrity is maintained, and availability is assured. Information Security Analysts must have a strong understanding of both security and networking, as well as a variety of tools and technologies.
Game Developer
Game Developers design, develop, and maintain video games. They work with a variety of tools and technologies to create games that are fun, engaging, and visually appealing. Linux is a popular operating system for game development, as it is free and open source, and it supports a wide variety of programming languages and game development tools. By taking this course, Game Developers can develop a deeper understanding of Linux and its features, which will allow them to create better games.
Computer Hardware Engineer
Computer Hardware Engineers research, design, develop, and test computer systems and components. They combine knowledge of electrical engineering and computer science to create hardware solutions for a variety of applications. Many Computer Hardware Engineers specialize in a particular type of hardware, such as processors, memory, or storage devices. This course is a valuable tool for Computer Hardware Engineers as it helps them develop a deeper understanding of the Linux operating system, which is widely used in embedded systems and other hardware devices. The course's focus on file management, memory management, and resource management is also highly relevant to the work of Computer Hardware Engineers.
Back-End Developer
Back-End Developers create and manage computer systems and software for websites and applications. They design, develop, deploy, and maintain the web services that power a site or application, including web pages, databases, servers, and APIs. This course teaches students how to interact with Linux operating systems in the C programming language. By gaining experience with the C language, students develop foundational skills that are highly applicable to back-end development. The course also promotes mastery of file management, memory management, and resource management, which are essential to back-end work.
Embedded Systems Engineer
Embedded Systems Engineers design, develop, and maintain embedded systems. Embedded systems are computer systems that are designed to be part of a larger system, such as a car or a medical device. Embedded Systems Engineers must have a strong understanding of both hardware and software, as well as the ability to work with a variety of tools and technologies. Linux is widely used in embedded systems, and this course provides foundational skills for aspiring Embedded Systems Engineers. Moreover, the course's emphasis on file management, memory management, and resource management is highly relevant to embedded systems work.
Computer Systems Analyst
Computer Systems Analysts design, implement, and maintain computer systems. They work with clients to determine their needs and develop solutions that meet those needs. Computer Systems Analysts must have a strong understanding of both hardware and software, as well as the ability to communicate effectively with both technical and non-technical audiences. The Linux operating system is one of the most popular platforms to deploy modern applications on. By taking this course, Computer Systems Analysts can develop a deeper understanding of Linux and its features, which will allow them to better serve their clients.
Database Administrator
Database Administrators (DBAs) are responsible for the design, implementation, and maintenance of databases. They work with database users to ensure that the database is meeting their needs and that their data is secure. DBAs must have a strong understanding of database technology, as well as the ability to work with a variety of operating systems and programming languages. As Linux is one of the most popular operating systems for database servers, this course provides foundational skills for aspiring DBAs. Moreover, the course's emphasis on file management, memory management, and resource management is highly relevant to database administration work.
DevOps Engineer
DevOps Engineers bridge the gap between software development and IT operations. They work to ensure that software is deployed and maintained efficiently and reliably. DevOps Engineers must have a strong understanding of both software development and IT operations, as well as a variety of tools and technologies. Knowledge of Linux is essential for DevOps Engineers as it is widely used in both software development and IT operations environments. This course helps equip DevOps Engineers with the necessary skills to be successful in their roles.

Reading list

We've selected 22 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Linux Systems Programming.
Well-known reference work on system programming under Unix. Strong on using and understanding the POSIX standard C library. Assumes some knowledge of C programming.
Provides a comprehensive overview of Linux system programming for C programmers, covering essential topics such as file I/O, process management, signals, and system calls.
Dives deep into advanced topics such as kernel programming, device drivers, and network programming, offering a more in-depth understanding of the Linux kernel.
Focuses on the development of Linux device drivers, providing practical guidance and insights into the process of interfacing with hardware devices.
Focuses on the development of embedded Linux systems, offering practical guidance and insights into the challenges and techniques involved in this domain.
Provides a comprehensive overview of operating systems concepts, including process management, memory management, and file systems, offering a deeper understanding of the underlying principles of Linux.
Provides a comprehensive treatment of concurrent programming techniques in C, offering a solid foundation for developing multithreaded applications in Linux.
Serves as a foundational reference on TCP/IP networking protocols, offering in-depth coverage of the underlying mechanisms and concepts.
Provides a comprehensive understanding of computer systems architecture and organization, offering a foundation for understanding how Linux interacts with the underlying hardware.
Covers security concepts and best practices for Unix-like systems. Good resource for understanding security considerations when developing software.
While written for Go programming, offers valuable insights into network programming concepts and techniques applicable to Linux system programming.
Offers a broader perspective on operating systems, covering concepts applicable to various platforms, including Linux, helping to contextualize Linux system programming.
Extensive guide to Linux, covering a wide range of topics from basic commands to advanced system administration.
Quick reference guide to Linux commands, utilities, and concepts. Useful for quick lookups and reminders.
Comprehensive reference book covering various aspects of Linux, including system administration, networking, and security.
Offers a broader perspective on embedded systems programming, providing insights into the design and development of reliable embedded applications, which can be applied to Linux-based embedded systems.
Introduces Linux concepts and commands through a graphical and interactive approach. Good for beginners or those new to Linux systems.
Introductory book for those new to Linux. Covers basic concepts, commands, and applications, good for beginners or those new to the Linux environment.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Linux Systems Programming.
Linux Basics: The Command Line Interface - 6
Most relevant
C Programming: Using Linux Tools and Libraries - 7
Most relevant
Working with Files and Streams in C# 9
Most relevant
Linux Basics: The Command Line Interface
Most relevant
Operating Systems Fundamentals
Most relevant
Files and directories in the Linux filesystem
Most relevant
C Programming: Using Linux Tools and Libraries
Most relevant
Linux System Programming and Introduction to Buildroot
Most relevant
Persistent Memory Technology - Introduction and Deployment
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser