linux编写软件用什么语言

2 02 2 年,我在某城市的一个小工作室,每天和几个伙伴在电脑上写代码。
Linux是我们的战场,C是我们的武器。
它就像一块磨刀石,可以磨砺我们的程序。

我当时正在进行的项目之一是一个用于监控设备的小程序。
我花了整整一个月的时间从零开始学C,那段时间我几乎每天都要和GCC编译器打交道。
它的进步令我惊讶。
我感觉我的代码获得了第二次生命。

后来,随着项目越来越大,我们开始使用C++来扩展功能。
KDE 桌面环境是用 C++ 编写的。
我们模仿他们,让我们的程序变得更加美丽。
Qt框架也是C++的杰作。
我们用它来在界面周围引起轰动。

还记得有一次,我在调试程序时,遇到了一个棘手的错误。
我花了几个小时终于发现是GCC编译器的一个小错误。
我很快修改、编译并运行代码,错误消失了。
那一刻,我感到非常有成就感。

在Linux环境下,开发规范和C/C++环境和我们的老朋友差不多。
它让我们在编程路上少走很多弯路。
从命名约定到工具链配置,每个细节都以有组织的方式处理。

后来我意识到了。
也许我是一个极端主义者,但在我心里,C/C++在Linux环境下的状态是一块基石,坚固不可动摇。

在Linux下用C语言编程

上周有客户问如何在Linux下编写守护进程,我就告诉他创建守护进程的方法。
这在DOS时代是很难写的。
想一想,必须手动编写大量代码才能将程序保留在内存中,并且内存管理可能会出现错误。
但在Linux下,事情根本就没那么简单。

只要加上&符号,命令行程序就可以在后台运行。
例如,当编写一个检查电子邮件的程序时,只需几行代码即可完成。
该程序每 1 0 秒检查邮箱(路径为 /var/spool/mail/username)以及是否发现新邮件。
它会通过身体的小扬声器发出蜂鸣声。
虽然这段代码很简单,但是主要思想非常重要:
1 .首先使用fork()创建一个子进程。
父进程并不重要,因为它稍后会被杀死。
2 、子进程杀死父进程,并使用kill()来独占此任务。
3 .使用while(1 )无限循环+sleep()实现定期检查
这个程序我2 02 3 年在上海实验室测试过,确实可以报警。
然而,缺点也很明显:用户无法自定义电子邮件路由和睡眠时间;如果系统突然重启守护进程不再存在。
后来我重构了程序并添加了配置文件并使用 systemd 进行管理,但那是另一个话题了。

其实,这比DOS时代好多了。
Linux隐藏了很多底层问题,要求程序员只关注业务逻辑。
但是,如果使用不当,子流程可能会导致问题。
例如,我在 2 02 2 年在北京调试了一个僵尸进程,差点导致服务器崩溃,所以记得在创建子进程后使用 waitpid() 来清理子进程。