Linux编程
Jeakon
推荐系统
展开
-
gcc学习笔记
格式: gcc [option] [filename]-c 只编译生成.o文件-o output_filename-O 优化程序-O2 优化程度更深-g 产生代码调试信息-Wall 所有警告-Werror 只报error-w 不产生任何警告-v 输出gcc工作的详细过程-DMACRO 相当于#define MACRO-I原创 2013-01-10 11:15:42 · 345 阅读 · 0 评论 -
Linux进程间通信之信号量
Linux进程间通信之信号量 信号量是一种用于提供不同进程间或一个给定进程的不同线程间同步手段的原语。在UNIX下有三种分别如下:Posix有名信号量;Posix基于内存的信号量;System V信号量。在这里只和大家分享下有关System V信号量。System V通过定义计数信号量集来对信号量的操作,计数信号量集是一个或多个信号量构成一个集合,其中每个都是计数信号量。对转载 2013-01-10 11:13:08 · 648 阅读 · 0 评论 -
Linux多线程同步方法
在线程对共享相同内存操作时,就会出现多个线程对同一资源的使用,为此,需要对这些线程进行同步,以确保它们在访问共享内存的时候不会访问到无效的数值。 以下是线程的几种同步方式:1、 互斥量。 通过使用pthread的互斥接口保护数据,确保同一时间只有一个线程访问数据。互斥量从本质上讲是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。如下例所示,就是互转载 2013-01-10 11:13:11 · 408 阅读 · 0 评论 -
makefile学习笔记
make默认寻找叫makefile或Makefile的文件,自己指定的话用 make -f 文件名"#": 注释符命令行首的"@":取消本行命令回显1.规则的基本格式:目标:依赖[tab]命令 命令开头要一个[tab]键例0:hello:main.o func1.o func2.o gcc main.o func1.o fun原创 2013-01-10 11:15:45 · 450 阅读 · 0 评论 -
shell学习笔记
文章收藏:《shell中if条件字符串、数字比对,[[ ]]和[ ]区别》 http://www.cnblogs.com/include/archive/2011/12/09/2307905.html1.开头 #!/bin/bash 每行结束不加分号2.变量所有变量都由字符串组成,无需声明,随时赋值使用,引用时加“$”“=”左右不能有空格为防止原创 2013-01-10 11:15:22 · 360 阅读 · 0 评论 -
linux下链接动态库路径相关的/etc/ld.so.conf,ldconfig, PKG_CONFIG_PATH【整理】
http://dev.firnow.com/course/6_system/linux/Linuxjs/200874/130190.html首先说下/etc/ld.so.conf:这个文件记录了编译时使用的动态链接库的路径。默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件如果你安装了某些库,比如在安装gtk+-2.4.13时它会需要glib-2.0原创 2013-05-11 13:15:57 · 2253 阅读 · 0 评论 -
Linux下动态库使用小结
1. 静态库和动态库的基本概念静态库,是在可执行程序连接时就已经加入到执行码中,在物理上成为执行程序的一部分;使用静态库编译的程序运行时无需该库文件支持,哪里都可以用,但是生成的可执行文件较大。动态库,是在可执行程序启动时加载到执行程序中,可以被多个可执行程序共享使用。使用动态库编译生成的程序相对较小,但运行时需要库文件支持,如果机器里没有这些库文件就不能运行。2. 如何使用动态原创 2013-05-11 14:46:39 · 808 阅读 · 0 评论 -
gcc的 -L -I -l -rpath -rpath-link
用gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录:例:gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lworld上面这句表示在编译hello.c时:-I /home/hello/include表原创 2013-05-11 14:44:15 · 2314 阅读 · 0 评论 -
Linux多线程
1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。 为什么有了进程的概念后,还要再引入线程呢?使用转载 2013-08-03 14:37:50 · 598 阅读 · 0 评论 -
linux下C语言多线程编程实例
学东西,往往实例才是最让人感兴趣的,老是学基础理论,不动手,感觉没有成就感,呵呵。下面先来一个实例。我们通过创建两个线程来实现对一个数的递加。或许这个实例没有实际运用的价值,但是稍微改动一下,我们就可以用到其他地方去拉。下面是我们的代码:/*thread_example.c : c multiple thread programming in linux *autho转载 2013-08-03 17:30:48 · 702 阅读 · 0 评论 -
system V 共享内存函数详解
使用共享内存的目的: 共享内存共享内存是进程间通信中最简单的方式之一。 共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。 当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。使用共享内存的流程: 1.进程必须首先分配它。 2.随后需要访问这个共享内存块的每一个进程都必须将这个共享内存绑定到转载 2013-01-10 11:13:23 · 472 阅读 · 0 评论 -
共享内存+信号量 实例
#include #include #include #include #include #include #include #define MAXSHM 5 //定义缓冲区数组的下标变量个数 /* 定义3个信号量的内部标识 */ int fullid; int emptyid; int mutexid; /* 主函数 */转载 2013-01-10 11:13:25 · 367 阅读 · 0 评论 -
Linux进程间通信之共享内存
Linux进程间通信之共享内存 共享内存区是可用IPC形式中最快的。一旦这样的内存区映射到共享它的进程的地址空间,这些进程间数据的传递就不再涉及内核(这里说的不涉及内核的含义是:进程不再通过执行任何进入内核的系统调用来彼此传递数据)。然而往该共享内存区存放信息或从中取走信息的进程间通常需要某种形式的同步,同步的方式有多种,比如:信号量、互斥锁等等。以下两图分别描述了读写消息时转载 2013-01-10 11:13:05 · 399 阅读 · 0 评论 -
Linux 进程概述
浅谈Linux进程作者:嵌入式学院武汉华嵌中心技术支持涂佩君内容清单:1. 在 Linux 内核内进程表示2. 在 Linux 内进程管理3. 在 Linux 内核创建一个进程引言 Linux的用户空间进程的创建和管理所涉及的原理与 UNIX有很多共同点,但也有一些特定于 Linux 的独特之处。在本文中,了解 Linux转载 2013-01-10 11:13:02 · 318 阅读 · 0 评论 -
system V 共享内存
系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shmid_kernel结构联系起来的),后面还将阐述。1、系统V共享内存原理进程间需要共享的数据被放在一个叫做IPC共享内存区域的地方,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地转载 2013-01-10 11:13:19 · 487 阅读 · 0 评论 -
Linux下求取文件长度的几种常用方法
在文件IO的编程过程中,经常会遇到如何求取文件长度的问题,这里将工作及教学中积累的一些常用方法写出来与大家分享。第一类:lseek/fseek1、lseek代码片段:int GetFileSize(char *_pName) { int iFd = -1; int iLen = 0; if (_pName == NULL) { ret转载 2013-01-10 11:13:13 · 1705 阅读 · 0 评论 -
用gdb调试程序(快速版)
redhat里面自带一个gdb的图形前端kdbg,升级到高一点的版本据说还是挺好用的。还有一个xxgdb,没用过,不知道怎么样。1. gcc -g tst.c -o tst 使用-g3选项还可以将源代码中的宏信息也包含进去2. gdb tst 出现命令提示符3. 基本gdb命令: ---------------------------------------------原创 2013-01-10 11:14:59 · 403 阅读 · 0 评论 -
c语言:fork函数详解
一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进转载 2013-01-10 11:12:49 · 2550 阅读 · 0 评论 -
Linux Shell编程实例
第2部分 实例 现在我们来讨论编写一个脚本的一般步骤。任何优秀的脚本都应该具有帮助和输入参数。并且写一个伪脚本(framework.sh),该脚本包含了大多数脚本都需要的框架结构,是一个非常不错的主意。这时候,在写一个新的脚本时我们只需要执行一下copy命令:cp framework.sh myscript 然后再插入自己的函数。 让我们再看两个例子: 二进转载 2013-01-10 11:15:27 · 366 阅读 · 0 评论 -
Linux Shell编程基础(全)
1. Linux 脚本编写基础1.1 语法基本介绍1.1.1 开头 #!/bin/sh 要使脚本可执行:chmod +x filename 1.1.2 注释 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。1.1.3 变量 变量都由字符串组成,不需要对变量进行声明 a="hello world"转载 2013-01-10 11:15:24 · 378 阅读 · 0 评论 -
用gdb调试程序(全)
原文标题:用GDB调试程序 作者:haoel (QQ753640)一个调试示例源程序:tst.c1 #include 23 int func(int n)4 {5 int sum=0,i;6 for(i=0; i<n; i++)7 {8 sum+=i;9 }10 return sum;11 }121314 main()15 {16 int i;17 lon转载 2013-01-10 11:14:56 · 547 阅读 · 0 评论 -
Linux文件编程
Linux 的文件编程有两种途径:基于Linux 系统调用;基于C 库函数。这两种编程所涉及到文件操作有新建、打开、读写和关闭,对随机文件还可以定位。 通常,一个进程打开时,都会打开3 个文件:标准输入、标准输出和标准出错处理。这3 个文件分别对应文件描述符为0 、1 和2 (也就是宏替换STDIN_FILENO 、STDOUT_FILENO 和STDERR_FILENO )。 一转载 2013-01-10 20:57:11 · 600 阅读 · 0 评论