嵌入式Linux中文站

Linux 平台相关代码的 C++ 解决方案

阅读(123)

本文首先提出平台相关代码造成的两个问题,然后针对这两个问题循序渐进依次提出解决方案,在分析了前两个方案弱点的基础上,最后着重介绍一种基于多种 设计模式 的 Linux 平台相关代码的解决方案,并给出此方案的 C++ 实现。 Linux 平台相关代码带来的问题 目前市场上存在着许多不同的 Linux 平台(例如:RedHat, Ubuntu, Suse 等),各大厂商和社区都在针对自己支持的平台进行优化,为使用者带来诸多方便的同时也对软件研发人员在进行编码时带来不少问题: 由于程序中不可避免的存在平台相关代

在 Linux 中如何使用 gdb 调试 C 程序

阅读(176)

无论多么有经验的程序员,开发的任何软件都不可能完全没有 bug。因此,排查及修复 bug 成为软件开发周期中最重要的任务之一。有许多办法可以排查 bug(测试、代码自审等等),但是还有一些专用软件(称为调试器)可以帮助准确定位问题的所在,以便进行修复。 如果你是 C/C++ 程序员,或者使用 Fortran 和 Modula-2 编程语言开发软件,那么你将会很乐意知道有这么一款优秀的调试器 -GDB- 可以帮你更轻松地调试代码 bug 以及其它问题。在这篇文章中,我们将讨论一下 GDB 调试器的基础知识,

Linux中ifreq 结构体分析和使用

阅读(79)

结构原型: /* * Interface request structure used for socket * ioctls. All interface ioctls must have parameter * definitions which begin with ifr_name. The * remainder may be interface specific. */ struct ifreq { #define IFHWADDRLEN 6 union { char ifrn_name[ I

引用 linux ioctl函数

阅读(131)

我这里说的ioctl函数是指驱动程序里的,因为我不知道还有没有别的场合用到了它,所以就规定了我们讨论的范围。写这篇文章是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑。 一、 什么是ioctl ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下: int ioctl(int fd, ind cmd, ); 其中fd是用户程序打开设备时使用open函数返回的文

Linux C文件读写函数

阅读(119)

C标准库提供的用于读写文件的函数非常多,大多数函数都在stdio.h中声明. fread/fwrite,fgets/fputs,fgetchar/fputchar,fprintf/fscanf............. 这些函数原型声明都在stdio.h中,如下: size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); size_t fwrite(const void *ptr, size_t size, size_t nmemb

Linux程序接口实验:取进程标志及用户信息

阅读(62)

0.环境平台 操作系统平台: Linux leaf 4.4.0-75-generic #96-UbuntuSMP Thu Apr 20 09:56:33 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 相关工具语言: vim,gcc,C语言 1.程序源代码 linux@linuxidc:~/operation/1$catpflag.c #includeunistd.h #includepwd.h #includesys/types.h #includestdio.h int

Linux多线程编程——读者优先、写者优先问题

阅读(138)

读者优先描述 如果读者来: 1) 无读者、写着,新读者可以读; 2) 无写者等待,但有其他读者正在读,新读者可以读; 3) 有写者等待,但有其他读者正在读,新读者可以读; 4) 有写者写,新读者等 如果写者来: 1) 无读者,新写者可以写; 2) 有读者,新写者等待; 3) 有其他写者写或等待,新写者等待 写者优先描述 如果读者来: 1) 无读者、写者,新读者可以读; 2) 无写者等待,但有其他读者正在读,新读者可以读; 3) 有写者等待,但有其他读者正在读,新读者等; 4) 有写者写,新读者等 如果写者