
Linux C
文章平均质量分 60
Linux C 编程,各种技巧,各种问题,各种工具
a_ran
程序员,公众号:进击的代码
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程创建 pthread_create 中自定义参数注意事项
1. 函数原型intpthread_create(pthread_tthread, const pthread_attr_tattr, void(start_routine) (void), voidarg);本文主要讨论最后一个参数,同时传递多个的问题(如果只传递一个 int char 等长度小于指针的数据类型,可以直接传,然后在线程内把 (v原创 2017-02-10 18:34:10 · 5220 阅读 · 1 评论 -
linux kernel Kconfig warning: leading whitespace ignored
自己在测试往内核添加模块时,用 make menuconfig 配置结果警告如下:原因是这个测试的Kconfig文件中的 comment值前有空格,如下:去掉这个空格就好了,实际上,menu 的值如果前面有空格,也会报这个警告。原创 2015-04-14 18:03:48 · 2414 阅读 · 0 评论 -
C语言结构体初始化的三种方法
直接上示例了#include struct student_st{ char c; int score; const char *name;};static void show_student(struct student_st *stu){ printf("c = %c, score = %d, name = %s\n", stu->c, stu->score, stu原创 2015-03-30 19:46:38 · 21976 阅读 · 1 评论 -
git commit --amend 修改还未提交到远程分支的 commit 信息
有时候用 git commit -m 提交时,可能没写好或者误操作导致提交的信息不合适,但你还没有 push 到远程分支时,可以使用 git commit --amend 修改上一次的提交信息。操作示例 如下:git commit --amend 后会出现编辑界面,如下可以在最上面红框的地方,修改要提交的信息,然后按Ctrl + o (WriteOut),如原创 2015-03-05 19:22:04 · 6088 阅读 · 0 评论 -
Linux 下使用 wc 统计文件夹下所有文件的代码行数(包括子目录)
wc 命令用于统计文件内容的行数、单词数、字母数。但是如果想统计一个目录下所有文件的行数,wc 并没有提供递归统计。不过,可以结合 find 命令,例如:$ wc -l `find -name *.c`其中,-l 参数是统计行数,find -name *.c 是查找当前目录(包含子目录)下所有的C文件,` ` 是 shell 中的替换命令。当然,实现方法有很多,我只是觉得这原创 2015-02-25 18:43:11 · 39332 阅读 · 0 评论 -
linux 程序、动态库、静态库内部添加版本号和编译时间
给程序和库添加版本号和库,有利于维护和升级。当然你可以在文件名上体现,比如有个程序叫 yun,文件名写为 yun_1.0.2,但这个需要每次手动维护,而且不能100%确保当前程序就是那个版本。所以,把版本号体现在程序内部,是一个不错的选择。----------------------------------- 我是做法分割线 o ----------------------------原创 2015-01-30 09:18:35 · 13719 阅读 · 0 评论 -
C语言中的预编译宏定义
在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤是由预处理器(preprocessor)来完成的. 在源流程序被编译器处理之前, 预处理器首先对源程序中的"宏(macro)"进行处理. C初学者可能对预处理器没什么概念, 这是情有可原的: 一般的C编译器都将预处理, 汇编, 编译, 连接过程集成到一起了. 编译预处理往往在后台运行. 在有的C编译器中, 这些过转载 2015-01-14 16:25:16 · 9395 阅读 · 0 评论 -
代码静态分析工具 - splint的学习与使用
引言最近在项目中使用了静态程序分析工具PC-Lint,体会到它在项目实施中带给开发人员的方便。PC-Lint是一款针对C/C++语言、windows平台的静态分析工具,FlexeLint是针对其他平台的PC-Lint版本。由于PC-Lint/FlexeLint是商业的程序分析工具,不便于大家对其进行学习和使用,因而下面我将介绍一个针对C语言的开源程序静态分析工具——splint。静转载 2015-01-14 16:22:39 · 2017 阅读 · 0 评论 -
每个 C 程序员都应知道的关于未定义行为的那点事(下篇)
译自:http://blog.llvm.org/2011/05/what-every-c-programmer-should-know_21.html(可能需翻墙)原日译版:http://blog-ja.intransient.info/2011/05/c-13.html 在第一部分中,我们对 C 中的未定义行为和它允许 C 较更“安全”之语言更为高效的几个情况略作了解。在第二部转载 2015-01-06 09:20:15 · 1521 阅读 · 0 评论 -
每个 C 程序员都应知道的关于未定义行为的那点事(中篇)
译自:http://blog.llvm.org/2011/05/what-every-c-programmer-should-know_14.html(可能需翻墙)原日译版:http://blog-ja.intransient.info/2011/05/c-23.html 在第一部分,我们讨论了是什么未定义行为,以及它如何允许 C 及 C++ 编译器产生较“安全”语言性能为高之代转载 2015-01-06 09:18:25 · 3303 阅读 · 0 评论 -
每个 C 程序员都应知道的关于未定义行为的那点事(上篇)
译自:http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html(可能需翻墙)原日译版:http://blog-ja.intransient.info/2011/05/c-13.html 人们有时会问为什么打开优化后 LLVM 编译出的代码会引发 SIGTRAP。仔细钻研之后,他们发现 Clang 生转载 2015-01-06 09:14:44 · 2716 阅读 · 0 评论 -
gcc/g++/make 编译信息带颜色输出
如果编译一个项目错误警告太多,非常不好找,所以非常希望输出信息可以带有颜色。可是 gcc 4.9.0 之前的版本并不支持,很多情况下是不能替换编译器的,比如使用交叉编译器,也可以使用 colorgcc,但我觉得不是特别好,需要配置,如果使用Makefile还要更改编译器设置,所以我自己动手写了一个,效果还可以,源码在github上: https://github.com/china原创 2014-12-23 12:00:07 · 11859 阅读 · 2 评论 -
Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip
获取本地 ip 地址,mac,通过域名获取对应的 ip,是网络编程可能遇到的比较常见的操作了,所以总结如下(封装了3个函数),直接上代码:#include #include #include #include #include #include #include #include #include #include #include #define MAC_S原创 2014-12-11 20:15:03 · 9589 阅读 · 0 评论 -
Linux 最最常用命令使用示例(10个并配图)
之前一个朋友想要我教下Linux的使用,于是我按照命令的关联性做了一个入门级的教程如下:(如果想下载 word 文件保存,请 下载)----------------------------------- 我是调皮的上下分割线 -----------------------------------------1. 打开终端的方法(我演示的系统是Linux Mint) A. 点原创 2014-11-24 13:04:22 · 12078 阅读 · 0 评论 -
Linux C语言 格式化输出时间函数 strftime()
今天在做根据日期时间+ID作为文件名存储时,用到了格式化时间的要求,如果单纯用struct tm这个结构体中获取到的信息来拼接字符串的话,如果是个位数,则不会在前面补0,比如我需要的是20130306,如果采用snprintf拼接字符串时获取到的时201336,这与我之前设想的有所不同,记得以前曾经自己实现过一个格式化的函数,但是比较繁琐。于是google了一下竟然还真有一个这样的函数:strft转载 2014-11-13 09:28:14 · 9321 阅读 · 1 评论 -
Linux下C语言计算文件的md5值(长度32)
google了好久都没有找到合适的,其实我只需要一个函数,能计算文件的 md5 值就好,后来找到了 md5.h 和 md5.c 的源文件,仿照别人的封装了个函数(他那个有问题,和 md5sum 计算出来的都不一样)。废话少说,直接贴代码: (再废一句话,如果只想计算字符串的md5值,把字符串传给 MD5Update 函数一次就好)#include "md5.h"#include原创 2014-11-07 18:56:51 · 24898 阅读 · 22 评论 -
man pthread_mutex_init 或 man pthread_mutex_lock 没有结果的解决办法
问题:在刚装好的 Mint/Ubuntu 可能会出现 man pthread_mutex 相关的函数没结果,如下图原创 2014-08-24 12:33:58 · 4519 阅读 · 0 评论 -
Linux系统编程之访问文件夹及其文件属性
1. 文件夹操作:opendir, readdir, closedir2. 文件属性:lstat代码示例如下实现功能:获取指定文件夹下所有的文件(使用递归),因此就能计算所有文件大小之类的啦。。。#include #include #include #include #include #include #include #include #define BUF_原创 2014-08-19 20:33:02 · 1774 阅读 · 0 评论 -
C/C++多文件共享全局变量时,使用extern的规范
关键字extern用来声明变量或者函数是一个外部变量或者外部函数,也就是说告诉编译器是在其他文件中定义的,编译的时候不要报错,在链接的时候按照字符串寻址可以找到这个变量或者函数。(函数默认是外部类型的,不需要显示声明,但是变量必须,如果想把一个函数声明为只在本文件范围有效,那么可以用static来说明) 在某个头文件,比如A.h中定义了全局变量比如int a;,那么在其他文件中的转载 2014-09-12 15:53:11 · 23762 阅读 · 0 评论 -
linux下串口调试工具/串口终端推荐: picocom
对于picocom, kermit, minicom, picocom 最简单易用,也完全符合我的使用需求。安装(mint / ubuntu):$ sudo apt-get install picocom使用:$ picocom -b 115200 /dev/ttyUSB0(/dev/ttyUSB0 为串口设备文件,如果用的不是USB转串口,则为 /dev/ttyS*)(可原创 2014-10-27 18:25:04 · 47363 阅读 · 0 评论