导航

Linux程序设计从入门到实战 线程 函数是线程的载体

Linux程序设计从入门到实战
共107节 3605人在学 课程详情
课程目录
讨论留言
  • Linux系统入门:核心命令实战

    • 课程介绍
    • Linux程序设计概要介绍
    • 从POST到Init,Linux的引导过程:在BIOS之后,操作系统才正式接管硬件资源
    • Linux命令行常用快捷键:加速你与Linux的交互速度
    • cd:切换目录命令常用技巧
    • mkdir:递归建立目录与批量克隆目录结构的技巧
    • touch:mtime,ctime和atime
    • ls:过滤文件与目录和查找最新更新但不知文件名的技巧
    • find:按时间查找
    • find-name和-type:按名称、按类型和查找结果取反
    • find-maxdepth:控制检索目录的深度
    • find-newer:查找比某个文件后创建的文件
    • find与exec:在目录中删除所有的文件但保留指定的文件
    • xargs:提取命令行参数
    • chmod与umask:文件目录权限
    • cat /dev/null:创建文件、显示文件以及清空文件内容
    • cut:截取文件内容
    • vi使用(上):介绍
    • vi使用(下):实战操作
    • grep命令:过滤文本信息
    • ps:查看进程命令
    • netstat:查看网络
    • gcc:-I解决目录进入,-w压抑警告和O2性能提升演示
    • gdb:调试工具介绍
    • 此节要删除
  • 导论-从编写Linux命令开始学习系统编程

    • Linux系统编程学什么:内核的存在性是理解系统编程的重要前提
    • 从more开始学写Linux命令:main函数argc,argv的意义与gdb使用
    • VT100的模拟、应用程序与标准输入直接交换数据
    • Linux编程中man的重要地位与段错误排查:学习编写命令who
    • gtime函数、timeval、time_t信息的由来与Linux中的日期显示:who2的改进实现
    • 用户与命令交互设计技巧:scanf误用的死循环bug、自己覆盖自己与cp命令的实现
    • ls命令模拟实现(上):使用readir获取目录信息
    • ls命令模拟实现(中):time_t结构体与unix时间戳-ls显示文件详细信息
    • ls命令模拟实现(下)
  • LINUX-I/O篇 示例与实践

    • fgets与gets中行I/O的溢出风险:文件描述字、流式编程
    • fgetc,fputc抛弃换行符后提取单字符命令示例:字符IO
    • fseek与文件写入定位:a+与w+写入数据的定位比较
    • fflush引发的缓存问题:全缓存\行缓存\无缓存细节详解
    • fread、fwrite共享文件偏移:同一个文件描述符的操作必然共享相同的文件偏移
    • fwrite API:参数size与nmemb的对应
    • ulimit系统最大文件个数与lsof侦测文件资源泄漏:从C库IO到系统调用
    • open\create 创建文件中的umask与文件权限问题
    • 轮询模式:read、O_NONBLOCK阻塞读问题与非阻塞
    • O_TRUNC:为什么文件要截断
  • Linux- 进程篇 示例与实践

    • 程序与进程区别:main函数是C程序的入口点吗?进程的生命周期
    • 进程生命周期的消亡atexit函数:非正常终止的进程atexit不会被OS调用
    • 进程上下文与环境变量putenv、setenv:优先使用set而非put
    • 进程创建:32位系统可以支持的最大进程数32768
    • fork与进程创建:父子进程推进顺序详解
    • fork炸弹:子进程不是从main而是从fork返回的地方开始运行
    • 僵尸进程的避免:系统资源没有放在进程的推进
    • exec与进程映像替换:exec就是对进程实现了换头手术
    • 守护进程
    • 进程编程综合实践:简易shell的模拟实现
    • 简易shell的模拟实现(一):execvp与命令执行
    • 简易shell的模拟实现(二):fork,wait与MiniShell实现
  • Linux文件系统- 文件与目录

    • 标准C库中的IO函数实际上就是对POSIX IO函数的封装
    • fileno获取当前进程的文件描述符:Linux始终返回当前最小的值作为当前进程的文件描述符
    • readdir/readdir_r操作目录
    • 综合应用pwd命令的实现(上):inode与文件对应关系的解读
    • 综合应用pwd命令的实现(下):文件在目录中的含义
    • 文件锁的概念
    • 文件锁:数据独占访问的一种形式
    • 文件区域锁
  • Linux文件系统- IO与设备文件编程

    • 一切设备皆文件:从tty看终端设备同样具有属性、权限
    • 终端与进程挂钩:Linux有一套维护设备连接的机制
    • termios结构应用:设备文件的控制就是设置对应的标志位
    • 类Unix交互风格的程序的实现:规范模式、raw模式的案例
    • IO重定向与Linux概念和内涵
    • stdin重定向到文件:close/open策略实现从文件而非键盘读取信息
    • dup/dup2重定向详解:open/close/dup/close策略
  • 进程间通信- 信号

    • 信号本质是软中断
    • 进程对信号的3种响应:SIG_DFL信号默认处理函数的恢复
    • alarm的定时器作用与sleep的可中断式睡眠
    • 定时器信号案例(上):飘动的字符串
    • 定时器信号案例(下):飘动的字符串
    • 传统信号的弊端:信号处理函数的可重入性
    • 信号阻塞block和未决pending的意义:内核是信号传递的媒介
    • 信号排队与丢弃现象:信号不可以为进程中的事件计数
  • 线程

    • 函数是线程的载体
    • 第一个线程程序:使用lpthread编译多线程程序
    • 并发编程中的第一类与时间有关的错误
    • 单条C语句依然存在线程不安全的风险
    • 使用信号量实现互斥
    • 缓冲区读写:生产者/消费者模型的实用案例
    • 负载均衡的线程分配难以建立:工程中的多线程开发经验分享(一)
    • 线程组ID(ttid)、pThread类型的id不能唯一标识线程:工程中的多线程开发经验分享(二)
    • pthread_Join与资源泄漏:工程中的多线程开发经验分享(三)
  • 进程间(IPC)通信

    • IPC概念的外延:网络通信也是进程间通信的一种
    • mkfifo:第一个管道程序
    • 管道的建立依赖两个程序的通信
    • Pipe与匿名管道
    • 利用Pipe在父子进程间传递数据
    • 利用Pipe实现Linux管道命令|
    • SIGPIPE信号、未正确关闭读写端的管道异常
    • ipcs和msgget:消息队列的创建
    • msgsnd和msgrcv:消息队列的接受与删除
    • shmget和shmmat:共享内存的通信
    • 信号在IPC中的风险:kill信号发送、多线程不宜与fork混用
    • popen与协同进程:从进程中获取数据是进程对文件的抽象
  • Socket与网络编程

    • Socket的内涵:本地socket通信的演示案例
    • Socket网络编程案例:初学者的一个常见bug调试
    • htons与kill 服务进程:网络字节序引起的端口号bug案例
    • 提领指向不完全类型的指针bug的解决:socket的封装案例
    • mini型http服务器的实现(上):利用rio增强IO流
    • mini型http服务器的实现(中):静态http解析的实现
    • mini型http服务器的实现(下):CGI的实现
回复
切换为未回复评论
切换为时间正序
请发表友善的回复…
发表回复

反馈

播放页问题反馈
视频学习中有任何产品建议都可由此反
馈,我们将及时处理!

课时介绍

函数是线程的载体

课程介绍

《Linux程序设计》主讲:丁宋涛

C/C++属于系统级别的编程语言,作为开源软件的代表作品Linux操作系统是所有C/C++程序员都应当熟悉和掌握的。本门课程从实战出发,降低了初级C/C++程序员进入Linux程序设计的门槛。本门课程以Centos为实验环境,从核心命令讲解,再到gcc/gdb开发环境,直至覆盖到460多个常用的类Unix/POSIX API。本课可以有效的节约初学者上手Linxu操作系统的时间。同时,课程结合GNU的开源代码,仿真实现Linux常用命令,展现类Unix系统调用的工程级别的实现思路,重点讲解Linux环境下的开发和接口函数,多线程并发,并最终实现了一个带有CGI功能的小型http服务器。本课程结合计算机程序运行原理等内容,增加学员实际编程代码量,提升实战能力。

推荐课程

信息系统项目管理师自考笔记

李明 · 723人在学

python从0到1:期货量化交易系统(CTP实战,高频及合成K线数据

王先生 · 22100人在学

手把手搭建Java超市管理系统【附源码】(毕设)

汤小洋 · 4205人在学

Java毕设springboot外卖点餐系统 毕业设计毕设源码 使用教

黄菊华 · 788人在学

基于SSM酒店管理系统(毕设)

小尼老师 · 841人在学

java项目实战之购物商城(java毕业设计)

Long · 5154人在学

手把手搭建Java求职招聘系统【附源码】(毕设)

汤小洋 · 1506人在学

Python Django 深度学习 小程序

钟翔 · 2319人在学

城管局门前三包管理系统+微信小程序(vue+springboot)

赖国荣 · 598人在学

Vue+Uni-app(uniapp)入门与实战+赠送仿美团点餐小程序

李杰 · 3985人在学

正在试验
后自动删除环境
课程实验
本次实验时间已到期 00:00:00

    订阅失败

    Linux程序设计从入门到实战
    Linux程序设计从入门到实战 ...

    订阅列表已满,请先移出部分订阅内容。

    当前章节需购买后观看
    开通超级会员免费看!专家精选系列课程,满足你从入门到精通!更有问答月卡免费送,你的问题有问必答!
    提交答案

    购买课程

    扫码完成付费,可继续学习全部课程内容

    加载中...
    课件正在飞速打包中,请耐心等待几秒钟~
    联系我们
    工作时间: 8:30 - 22:00
    客服电话: 400-660-0108
    kefu@csdn.net在线客服
    • 关于我们
    • 招贤纳士
    • 商务合作
    • 寻求报道
    • 京ICP备19004658号
    • 经营性网站备案信息
    • 公安备案号11010502030143
    • 营业执照
    • 北京互联网违法和不良信息举报中心
    • 家长监护
    • 中国互联网举报中心
    • 网络110报警服务
    • Chrome商店下载
    • 账号管理规范
    • 版权与免责声明
    • 版权申诉
    • 出版物许可证
    • ©1999-2024北京创新乐知网络技术有限公司

    视频问题反馈

    提交遇到的问题我们会尽快解决的 ~