
linux系统编程
ghostyu
这个作者很懒,什么都没留下…
展开
-
常见的makefile写法
1、目标名称,摆脱手动设置目标名称TARGET = $(notdir $(CURDIR))all:$(TARGET) CMD....$(CURDIR) 表示Makfile当前目录全路径$(notdir $(path)) 表示把path目录去掉路径名,只留当前目录名这样就可以得到Makefile当前目录名称,用目录名作为目标程序名是一个不错的选择2、使用include,把原创 2012-07-17 14:37:53 · 14316 阅读 · 0 评论 -
linux基础编程 多线程中的互斥锁 pthread_mutex_lock
pthread_mutex.h头文件#ifndef __SEM_UTIL_H__#define __SEM_UTIL_H__typedef void* SemHandl_t;SemHandl_t MakeSem(); ///< Initialize the semaphore.int SemRelease(SemHandl_t hndlSem); ///< Unlock the原创 2012-07-10 20:19:40 · 7134 阅读 · 0 评论 -
mount:RPC:Unable to receive;errno=No route to host原因
mount -t nfs -o nolock 192.168.2.103:/opt/tiny210/nfs /mnt挂在nfs服务器,出现mount:RPC:Unable to receive;errno=No route to host原因:有限制的端口1、永久性关闭lokkit --disabled2、 即时生效,重启后失效service 方式开启: s原创 2012-02-25 16:29:48 · 11942 阅读 · 1 评论 -
setitimer和sleep是冲突的
事实上,做内核开发的人知道,setitimer和sleep是冲突的!因为它们都使用了信号,而信号会打断sleep。原创 2012-08-24 15:03:10 · 3358 阅读 · 0 评论 -
linux基础编程 链路层socket 摆脱winPcap 夸网段socket通信 可夸平台移植
在linux环境中要从链路层(MAC)直接收发数据帧,可以通过libpcap与libnet两个动态库来分别完成收与发的工作。虽然它已被广泛使用,但在要求进行跨平台移植的软件中使用就很难办到了。。这是一种更为直接地、无须安装其它库的从MAC层收发数据帧的方式,即通过定义链路层的套接字来完成。下面的代码也是我做的项目中的代码(夸网段访问网络中的嵌入式设备),去掉了敏感部分,和大家共享!但是原创 2012-07-11 20:50:43 · 5429 阅读 · 5 评论 -
linux基础编程 套接字socket 完整的服务器端多线程socket程序
此段程序来自我的一个项目中,稍微做了些修改,运行稳定,客户端程序比较简单所以未编写,可以用socket调试工具测试此段代码费话不多说,直接上代码#include #include #include #include #include #include #include #include #include #include #include #include#d原创 2012-07-11 16:59:43 · 9707 阅读 · 2 评论 -
linux基础编程 共享内存 使用内存映射接口mmap系统调用
采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,转载 2012-07-11 15:24:51 · 3244 阅读 · 0 评论 -
linux基础编程 消息队列 msgsnd
实际上,消息队列常常保存在链表结构中。拥有权限的进程可以向消息队列中写入或读取消息。消息队列本身是异步的,它允许接收者在消息发送很长时间后再取回消息,这和大多数通信协议是不同的。例如WWW中使用的HTTP协议是同步的,因为客户端在发出请求后必须等待服务器回应。然而,很多情况下我们需要异步的通信协议。比如,一个进程通知另一个进程发生了一个事件,但不需要等待回应。但消息队列的异步特点,也造成了一个原创 2012-07-11 10:51:05 · 4381 阅读 · 0 评论 -
linux 信号
$ kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE转载 2012-06-12 09:19:44 · 1128 阅读 · 0 评论 -
gdb参数及命令详解 (已整理) core dump调试
名称 gdb - GNU 调试器提要 gdb [-help] [-nx] [-q] [-batch] [-cd=dir] [-f] [-b bps] [-tty=dev] [-s symfile] [-e prog] [-se prog] [-c core] [-x cmds] [-d dir转载 2012-10-17 21:51:41 · 24833 阅读 · 1 评论 -
linux基础编程 共享内存 通过消息队列实现同步 shmget
共享内存可以被描述成内存一个区域(段)的映射,这个区域可以被更多的进程所共享。这是IPC机制中最快的一种形式,因为它不需要中间环节,而是把信息直接从一个内存段映射到调用进程的地址空间。 一个段可以直接由一个进程创建,随后,可以有任意多的进程对其读和写。但是,一旦内存被共享之后,对共享内存的访问同步需要由其他 IPC 机制,例如消息队列来实现。包含文件1、msg.c2、msg.h3、原创 2012-07-11 14:08:18 · 6366 阅读 · 0 评论 -
linux基础编程 多线程
linux线程/* 演示linux线程的基本操作,高级用法请看程序下面转载的内容*/#include #include #include #include #define __DEBUG#ifdef __DEBUG#define DBG(fmt,args...) fprintf(stdout, fmt, ##args)#else#define DBG(fmt原创 2012-07-10 10:04:37 · 2323 阅读 · 1 评论 -
nfs:server is not responding, still trying
问题描述:我使用目标机挂在nfs后,读写较大的文件就会出现server is not responding, still trying问题,google了一下,有人是这么解决的,如下*************************************************************************在mini2440开发板上挂载主机上的nfs文件系统后传送较大文原创 2012-02-25 23:01:59 · 8036 阅读 · 5 评论 -
system 调用命令cd无效
熟悉Unix编程的人都知道,在中声明的函数system是用来在程序中调用shell命令的方法。例如你可以在程序中写一行system("rm *");这相当于你在命令行下敲rm *,但是cd命令却不能用system来做的。一般,你要改变程序的pwd,你都必须用函数chdir(const char*),它在中声明。原创 2012-08-24 15:06:18 · 5185 阅读 · 0 评论 -
gcc常见参数说明
1.gcc包含的c/c++编译器gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的。一般c程序就用gcc编译,c++程序就用g++编译。2.gcc的基本用法gcc test.c这样将编译出一个名为a.out的程序gcc test.c -o test这样将编译出一个名为test的程序,-o参数用来指定生成程序的名字3.为什么会出现undef转载 2012-07-18 15:27:27 · 1441 阅读 · 0 评论 -
linux基础编程 多线程同步 pthread_cond_signal
条件变量同步锁示例此例根据上一篇文章修改请包含上一篇中的两个文件(未做任何改动)1/ pthread_mutex.h2/ pthread_mutex.c上一篇的thread.c文件修改如下/*多线程同步示例,条件变量同步锁*/#include #include #include #include #include "pthread_mutex.h原创 2012-07-10 21:57:51 · 2563 阅读 · 0 评论