Visão Geral
Aprenda como desenvolver aplicativos para o ambiente Linux. Neste Curso Developing Applications For Linux, ministrado por instrutor, você obterá experiência prática com as ferramentas e métodos necessários para o desenvolvimento de aplicativos Linux e aprenderá sobre os recursos e técnicas exclusivos do Linux.
Objetivo
Neste Curso Developing Applications For Linux, você aprenderá sobre as ferramentas e métodos para desenvolver programas C e fazer programação de sistemas em Linux, técnicas de depuração, gerenciamento de processos, chamadas de sistema e pagas específicas do Linux e muito mais.
Publico Alvo
- Este curso é para desenvolvedores experientes.
Pre-Requisitos
- Os alunos devem ser proficientes em programação C e estar familiarizados com utilitários básicos do Linux e editores de texto.
Materiais
Português/Inglês + Exercícios + Lab Pratico
Conteúdo Programatico
Introduction
- Objectives
- Who You Are
- The Linux Foundation
- Linux Foundation Training
- Certification Programs and Digital Badging
- Linux Distributions
- Platforms
- Preparing Your System
- Using and Downloading a Virtual Machine
- Things change in Linux
Preliminaries
- Procedures
- Standards and the LSB
How to Work in OSS Projects **
- Overview on How to Contribute Properly
- Stay Close to Mainline for Security and Quality
- Study and Understand the Project DNA
- Figure Out What Itch You Want to Scratch
- Identify Maintainers and Their Work Flows and Methods
- Get Early Input and Work in the Open
- Contribute Incremental Bits, Not Large Code Dumps
- Leave Your Ego at the Door: Don’t Be ThinSkinned
- Be Patient, Develop Long Term Relationships, Be Helpful
Compilers
- GCC
- Other Compilers
- Major gcc Options
- Preprocessor
- Integrated Development Environments (IDE)
- Labs
Libraries
- Static Libraries
- Shared Libraries
- Linking To Libraries
- Dynamic Linking Loader
- Labs
Make
- Using make and Makefiles
- Building large projects
- More complicated rules
- Builtin rules
- Labs
Source Control
- Source Control
- RCS and CVS
- Subversion
- git
- Labs
Debugging and Core Dumps
- gdb
- What are Core Dump Files?
- Producing Core Dumps
- Examining Core Dumps
- Labs
Debugging Tools
- Getting the Time
- Profiling and Performance
- valgrind
- Labs
System Calls
- System Calls vs. Library Functions
- How System Calls are Made
- Return Values and Error Numbers
- Labs
Memory Management and Allocation
- Memory Management
- Dynamical Allocation
- Tuning malloc()
- Locking Pages
- Labs
Files and Filesystems in Linux **
- Files, Directories and Devices
- The Virtual File System
- The ext2/ext3 Filesystem
- Journaling Filesystems
- The ext4/ Filesystem
- Labs
File I/O
- UNIX File I/O
- Opening and Closing
- Reading, Writing and Seeking
- Positional and Vector I/O
- Standard I/O Library
- Large File Support (LFS)
- Labs
Advanced File Operations
- Stat Functions
- Directory Functions
- inotify
- Memory Mapping
- flock() and fcntl()
- Making Temporary Files
- Other System Calls
- Labs
Processes I
- What is a Process?
- Process Limits
- Process Groups
- The proc Filesystem
- InterProcess Communication Methods
- Labs
Processes II
- Using system() to Create a Process
- Using fork() to Create a Process
- Using exec() to Create a Process
- Using clone()
- Exiting
- Constructors and Destructors
- Waiting
- Daemon Processes
- Labs
Pipes and Fifos
- Pipes and InterProcess Communication
- popen() and pclose()
- pipe()
- Named Pipes (FIFOs)
- splice(), vmsplice() and tee()
- Labs
Asynchronous I/O**
- What is Asynchronous I/O?
- The POSIX Asynchronous I/O API
- Linux Implementation
- Labs
Signals I
- What are Signals?
- Signals Available
- Dispatching Signals
- Alarms, Pausing and Sleeping
- Setting up a Signal Handler
- Signal Sets
- sigaction()
- Labs
Signals II
- Reentrancy and Signal Handlers
- Jumping and NonLocal Returns
- siginfo and sigqueue()
- Real Time Signals
- Labs
POSIX Threads I
- Multithreading under Linux
- Basic Program Structure
- Creating and Destroying Threads
- Signals and Threads
- Forking vs. Threading
- Labs
POSIX Threads II
- Deadlocks and Race Conditions
- Mutex Operations
- Semaphores
- Futexes
- Conditional Operations
- Labs
Networking and Sockets
- Networking Layers
- What are Sockets?
- Stream Sockets
- Datagram Sockets
- Raw Sockets
- Byte Ordering
- Labs
Sockets Addresses and Hosts
- Socket Address Structures
- Converting IP Addresses
- Host Information
- Labs
Sockets Ports and Protocols
- Service Port Information
- Protocol Information
- Labs
Sockets Clients
- Basic Client Sequence
- socket()
- connect()
- close() and shutdown()
- UNIX Client
- Internet Client
- Labs
Sockets Servers
- Basic Server Sequence
- bind()
- listen()
- accept()
- UNIX Server
- Internet Server
- Labs
Sockets Input/Output Operations
- write(), read()
- send(), recv()
- sendto(), recvfrom()
- sendmsg(), recvmsg()
- sendfile()
- socketpair()
- Labs
Sockets Options
- Getting and Setting Socket Options
- fcntl()
- ioctl()
- getsockopt() and setsockopt()
- Labs
Netlink Sockets**
- What are netlink Sockets?
- Opening a netlink Socket
- netlink Messages
- Labs
Sockets Multiplexing and Concurrent Servers
- Multiplexed and Asynchronous Socket I/O
- select()
- poll()
- pselect() and ppoll()
- epoll
- Signal Driven and Asynchronous I/O
- Concurrent Servers
- Labs
Inter Process Communication
- Methods of IPC
- POSIX IPC
- System V IPC**
- Labs
Shared Memory
- What is Shared Memory?
- POSIX Shared Memory
- System V Shared Memory**
- Labs
Semaphores
- What is a Semaphore?
- POSIX Semaphores
- System V Semaphores**
- Labs
Message Queues
- What are Message Queues?
- POSIX Message Queues
- System V Message Queues**
- Labs
TENHO INTERESSE