
C语言
文章平均质量分 65
xuzhouweihao
这个作者很懒,什么都没留下…
展开
-
判断单链表中是否有环,计算出环的首地址 C语言实现
判断单链表中是否有环,如果有,得出进入环时首个节点的地址. 有环的定义是,链表的尾节点指向了链表中的某个节点。如:原创 2014-06-24 12:44:24 · 1491 阅读 · 0 评论 -
error: ‘for’ loop initial declaration used outside C99 mode 问题对应方式
使用gcc 编译出现如下问题:原创 2014-10-20 22:50:58 · 1377 阅读 · 0 评论 -
多线程编译时_REENTRANT宏定义的必要性以及pthread和lpthread的区别
在Linux程序设计第4版 12.3章节中说到:在编写多线程程序时,我们需要通过定义宏_REENTRANT来告诉编译器我们需要可重入功能,而这个宏定义必须位于程序中的任何#include语句之前。进行该宏定义后,我们能够以一种多线程安全的方式来访问一些函数或者一些值(如:stdio.h中的一些以宏形式实现的函数,errno.h中的变量errno)。 但是, 该_REENTRANT宏是必须的原创 2014-10-19 23:31:11 · 1907 阅读 · 0 评论 -
errno多线程安全问题
在学习Linux程序设计时,看到了这么一句话:最初的UNIX和POSIX库中,在一个多线程程序里,默认情况下,只有一个errno变量供所有的线程共享。如果是这样的话,当在一个线程中准备获取刚才的错误码时,该变量很容易被另外一个线程中的函数调用改变。然后特意去查了下资料,总结了一下Linux下errno的资料,希望对你有所帮助。如果有什么错误问题请多多包涵并留言,一起学习进步。 首先,我们查原创 2014-10-19 23:22:23 · 3637 阅读 · 0 评论 -
Linux下防止程序重新启动
有一些程序在同一服务器同一时间只能运行一个,因此这样的程序应该需要一个排外的处理。当程序再次运行时,检测到该程序已经运行了,那么程序停止结束。 文件和记录锁(fcntl()和F_SETLK(设置记录锁))提供一种方法确保只有程序只被正在运行一次。如果每一个程序对一个固定的文件进行加锁(写,只有这个锁)。连续对该文件追加记录锁会失败,也意味着该程序正在被运行。这个记录锁是互斥的,如果一个程序翻译 2014-10-24 20:49:43 · 1559 阅读 · 0 评论 -
约瑟夫问题 C语言代码
一、约瑟夫问题的由来原创 2014-06-18 17:27:05 · 1631 阅读 · 0 评论 -
C语言中static的作用
static的作用 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // g转载 2014-05-29 15:26:21 · 980 阅读 · 0 评论 -
使用popen函数创建ping命令管道
首先介绍下popen函数。头文件:#include 函数定义:FILE *popen(const char *command, const char*type);关联函数:int pclose(FILE *stream); popen() 函数创建一个管道 ,调用fork建立一个 进程, 并调用shell。因为该函数的返回值是一个普通的标准I/0流,所以它只能用pc原创 2014-05-28 08:09:15 · 1618 阅读 · 0 评论 -
汉诺塔模拟_C语言源代码(递归和栈)
首先,先了解下,什么是汉诺塔。原创 2014-06-29 21:22:43 · 1139 阅读 · 0 评论 -
gcc命令objdump用法
gcc命令之 objdump ---------------objdump是用查看目标文件或者可执行的目标文件的构成的GCC工具----------以下3条命令足够那些喜欢探索目标文件与源代码之间的丝丝的关系的朋友。objdump -x obj 以某种分类信息的形式把目标文件的数据组织(被分为几大块)输出 objdump -t obj 输出目标文件的符号表()objdum转载 2014-05-27 10:20:40 · 690 阅读 · 0 评论 -
gdb中汇编调试
原标题名《gdb相关(gdb十分钟教程)》本文写给主要工作在Windows操作系统下而又需要开发一些跨平台软件的程序员朋友,以及程序爱好者。GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调试工作。命令转载 2014-05-23 14:36:28 · 1093 阅读 · 0 评论 -
sscanf的用法
#include 定义函数 int sscanf (const char *str,const char * format,........);函数说明 sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。返回值 成功则返回参数数目,失败则返回-1,错误原因存于errno中转载 2014-06-12 13:29:33 · 894 阅读 · 0 评论 -
多线程 sleep usleep 阻塞问题
今天碰到一个问题,在多线程处理时,一个线程处理停止了,一开始以为是死锁了,但是过一段时间后,又正常运行了。又仔细看了下处理,才发现是usleep的问题。sleep和usleep都是使用alarm的信号机制实现等待。入股多线程同时usleep或者sleep时,就有可能造成程序阻塞。如果需要进行线程等待的话,使用nanosleep或者select来代替。select实现等待方式如下原创 2014-12-10 20:37:27 · 9043 阅读 · 4 评论