linux系统编程的100个小项目 linux编程的基本过程

Linux系统编程基本过程:
1 . 环境搭建
发行版:Ubuntu 2 0.04 ,2 02 0年4 月发布。

安装:1 小时内完成。

2 . 基础学习
文件系统:掌握在3 天内使用ls -la查看详细目录。

命令行:7 天内熟练grep、find、chmod。

3 . 文本编辑器与基本命令
vi/vim:5 天内完成i插入、Esc退出、:wq保存。

基本命令:3 天内掌握cat /proc/cpuinfo查看CPU信息。

4 . 编写源代码
编写C代码:1 天内完成hello.c打印"Hello, World!"。

保存:使用:w命令保存。

5 . 编译与链接
安装GCC:sudo apt-get install build-essential,1 0分钟完成。

编译:gcc -o hello hello.c,2 秒完成。

链接:默认gcc hello.c自动链接标准库。

6 . 运行与调试
运行:./hello,0秒执行。

调试:gdb ./hello,设置断点break main,1 0分钟掌握。

7 . 安全管理
用户权限:sudo useradd test创建用户,1 天掌握chown。

防火墙:ufw allow 2 2 开放SSH,5 分钟配置。

8 . 项目实践
基础项目:3 天内完成cat命令的C语言重写。

进阶项目:7 天开发简易TCP客户端。

综合项目:3 0天完成基于socket的文件传输工具。

实操提醒:直接上手写最小可运行程序,别在准备阶段耗时。

深入了解Linux系统编程-(pthread)线程创建与使用

上周,我那个朋友在学Linux系统编程,特别提到了线程的创建与使用。
他发现,线程与进程的区别可大了。
进程是调度的最小单位,每个进程有PID,管理它得靠PID。
进程结束了,如果不通过wait()回收,就会变成僵尸进程。
而线程是进程内的最小调度单位,每个进程有一个主线程,线程结束了得调用pthread_exit(),主线程通过pthread_join()来回收资源。
他说,线程通信速度通常比进程快,因为它们大多在进程空间内完成,不需要切换内核上下文或访问外设。

然后,他告诉我线程创建要用pthread_create(),得链接-lpthread库。
他给我看了函数原型,参数包括线程标识符指针、线程属性、线程函数起始地址和函数参数。
创建两个线程执行不同函数的示例,他还提到了pthread_join()等待子线程结束。

接着,他讲到了线程退出,说要用pthread_exit()终止线程,返回值可以通过pthread_join()获取。
他还强调了线程结束必须释放堆栈,否则主进程退出时才会释放。

他提到了等待线程结束的pthread_join()函数,这个函数会阻塞等待指定线程结束,回收资源。
他还提到了线程分离属性,说默认线程是joinable的,未回收会导致资源泄漏。

获取当前线程ID的pthread_self()函数也引起了他的注意,他说返回的是当前线程标识符,类型为unsigned long int,打印时得用%lu格式。

他还提到了自动清理资源,通过pthread_cleanup_push()注册清理函数,pthread_cleanup_pop()释放。
清理函数在调用pthread_exit()或pthread_cleanup_pop(1 )时执行。

至于线程取消,他说要用pthread_cancel()取消同一进程中的其他线程,但要注意线程的取消状态。

最后,他比较了线程和进程的通信方式,说线程间通信包括互斥量、自旋锁、条件变量等,速度较快;而进程间通信包括共享内存、消息队列、信号量等,速度较慢。
他说,这部分内容挺重要的,需要好好消化。
我听着,心想,这Linux系统编程还真是挺有意思的。
算了,你看着办吧。

Linux 入门有哪些值得看,值得买的书籍?这一篇详细为您介绍

结论: 1 .《Linux工具快速教程》:开源电子书,适合快速入门,几天掌握核心操作。
2 .《LinuxShell脚本攻略(第三版)》:实战为主,精简内容,自学Shell脚本。
3 .《Linux命令行与Shell脚本编程大全(第三版)》:全面知识体系,丰富教程,桌面参考。
4 .《Linux就该这么学》:免费在线,案例实践,巩固知识。
5 .《鸟哥的Linux私房菜·基础学习篇(第四版)》:详实全面,口语化讲解,适合进阶学习。
6 .《Linux命令行大全》:口碑好,易理解,零基础巩固。
入门选快速入门书籍,系统学习选全面书籍,进阶提升看深入理解书籍,实践导向选案例实战书籍。

【干货】建议收藏 新手程序员必读的十本经典著作

等等,还有个事。
记得刚学Java那会儿,我总在调试一个网络通信的bug,反复看《疯狂Java讲义》,结果发现是忘了导包。
这书当时真是把我喂饱了,一行行看,一个个敲,连注释都跟着抄。
2 01 8 年,我在公司里第一次独立做项目,就是靠这本书把JDBC和集合框架搞明白的。
不过,现在回头看,有些东西网上随便一搜就到了,但那时候可真不一样。
突然想到,这书里讲的Java8 新特性,现在还有多少人用呢?