配套视频学习链接:https://www.bilibili.com/video/BV1zV411e7Cy?p=2&vd_source=d488bc722b90657aaa06a1e8647eddfc
目录
Linux系统编程的基本认识
什么是Linux系统编程?
Linux系统编程也叫Linux下的高级编程,是介于应用层和驱动层之间的。
什么是系统编程
以 UCOS 裸机实时操作系统为例对系统编程概念进行引入。 相信学过裸机的同学一定不陌生, 在使用 UCOS 实际开发一个项目或者一个产品的时候, 会使用 UCOS 提供的接口进行编程,UCOS 系统编程的一个简单示例代码如下所示:
void task(void *pd)
{
;
}
OS_STK stack[1024];
int main()
{
BspInit();
OSInit();
OSTaskCreate(task,(void *)0,&stack[1023],1);
OSStart();
}
上述代码会使用 UCOS 提供的函数对系统和硬件的相关功能进行调用,而系统编程的定义为:使用操作系统自身提供的接口进行开发的过程就叫做系统编程。
由于 UCOS 等一众裸机操作系统实现起来较为简单,所以系统的底层开发人员和上层应用开发人员是同一个人或者同一团队,而 Linux操作系统将底层和上层应用进行了分离,从而可以让更多的人加入到 Linux 系统的开发中,但是这样每个人都会有权力调用底层接口对硬件进行操作,从而给整个系统带来了不稳定性和不安全性。为了解决这一隐患,Linux 系统推出了系统调用。
所谓系统调用指的是 Linux 内核对一系列接口封装后提供给用户的一系列 API 函数,需要特定的机制才能使用系统调用, 所以系统调用的出现, 保证了系统的稳定性和不安全性。
系统编程的作用
为了更直观的了解系统编程的作用, 这里作者以武侠小说中练习绝世武功作为类比。 若是想要练成一门绝世武功, 只是有相对应的武功秘籍是不行的, 在在之前, 你需要通过每天扎马步、 跑步等方式对身体进行锤炼, 有了一个好的体魄才能开始武功秘籍的学习。 这里要认清楚,并不是练了武功秘籍才有了好的体魄, 而是有了好的体魄才能练习武功秘籍。
而系统编程就是后学开发的基础, 系统编程基础打好之后可以完成的工作如下所示:
1) 操作系统开发: 系统编程是操作系统开发的基础, 它涉及到开发和维护内核、 驱动程序和其他底层系统软件。
2) 应用程序开发: 一些应用程序需要直接访问硬件或操作系统资源, 例如音频、 视频、网络或文件系统, 因此需要进行系统编程。
3) 系统管理: 系统编程可以用于编写脚本和工具, 以管理计算机系统和网络, 例如配置文件、 监控和自动化任务。
4) 安全: 系统编程可以用于编写安全软件和工具, 例如防病毒软件、 防火墙和入侵检测系统。
5) 性能优化: 系统编程可以用于编写优化代码, 以提高程序的性能和响应速度, 例如利用多线程、 异步 I/O 和内存映射等技术。
怎么学习Linux系统编程?
推荐迅为电子的框架学习法,可以参考我的这篇文章:Linux学习方法-框架学习法——Linux应用程序编程框架
Linux系统编程基本程序框架
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
//argc:表示的是命令行中参数的个数
//argv:表示的是命令行中的参数
int i;
printf("argc is %d\n",argc);
for(i=0;i<argc;i++)
{
printf("argv[%d] is %s\n",i,argv[i]);
};
return 0;
}