linux下C语言编程
hbuxiaoshe
这个作者很懒,什么都没留下…
展开
-
linux下C语言编程1-gdb调试程序简介
使用gdb调试程序前,编译命令须加-g参数,如gcc -g -o test test.c(-g在前)启动gdb,如#gdb test 常用命令,括号中是命令缩写:run(r):执行当前被调试的程序break(b):设置端点,如(gdb) b 10list(l):列出正在调试的应用程序的源代码,显示10行代码next(n):单步执行print(p):显示变量(表达式)原创 2009-11-30 16:54:00 · 2007 阅读 · 0 评论 -
fstatfs/statfs详解
【fstatfs/statfs系统调用】 功能描述: 查询文件系统相关的信息。 用法: #include /* 或者 */ int statfs(const char *path, struct statfs *buf); int fstatfs(int fd, struct statfs *buf); 参数: path: 位于需要查询信息的文件系原创 2011-06-22 19:54:00 · 21309 阅读 · 0 评论 -
-E参数在gcc上的好处
gcc的参数有很多,这里说一个很重要的参数-E。如果我们只是想把源文件预处理一下,-E就派上用场了。 它能干什么?(1)把用户定义的所有的预定义#define展开。举个例子,如果用户有以下代码:#define Max(a, b) ((a)>(b)?(a):(b))...int c = Max(a, b);经过gcc预处理后,预定义都将展开成如下样子:int原创 2011-06-09 11:30:00 · 6367 阅读 · 0 评论 -
gcc编译时指定宏定义
编译时:gcc -DMAX=32 -o a a.c 相当于在文件a.c中定义:#define MAX 32原创 2011-06-09 15:57:00 · 10046 阅读 · 0 评论 -
linux下C语言编程6-信号量函数semget() semop() semctl()
<br />semget()<br />创建一个新的信号量集,或者使用一个已经存在的信号量集。<br />系统调用:semget();<br />原型:int semget(key_t key, int nsems, int semflg);<br />参数:第一个参数是关键字值(一般是由系统调用ftok()返回的)。<br />第二个参数nsems指出一个新的信号量集合中应该创建的信号量的个数。可以将信号量集合理解为数组,长度为nsems。最大个数定义在linux/sem.h,我的ub原创 2010-10-28 15:27:00 · 8957 阅读 · 1 评论 -
linux下C语言编程4-使用共享内存实现进程间通信2
上一篇《linux下C语言编程4-使用共享内存实现进程间通信》实现了共享内存的创建和使用,但是,使用时却不方便,需要知道该共享内存的id才能使用。为了对其改进,下面使用了函数ftok。ftok原型如下:key_t ftok( char * fname, int id ):fname就时你指定的文件名,id是子序号。将上篇例子中ABCD代码修改为如下:代码A:int main(){ int shmid; key_t key; char *name = "/home/xiaoshe/study/原创 2010-10-22 12:16:00 · 2898 阅读 · 0 评论 -
linux下C语言编程4-使用共享内存实现进程间通信
<br />共享内存的函数有以下几个:<br />(1)int shmget(key_t key, int size, int shmflg),开辟或使用一块共享内存。<br />(2)void *shmat(int shmid, const void *shmaddr, int shmflg), 将参数shmid所指向的共享内存与当前进程连接。<br />当使用某共享内存时,需要先使用shmat,达成连接。<br />(3)int shmdt(const void *shmaddr),将先前用shmat连原创 2010-09-24 21:23:00 · 7363 阅读 · 1 评论 -
linux下C语言编程5-多线程编程
<br />Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,编译需要在后面加-lpthread。<br />关于多线程,主要有以下几个过程:<br />1,创建线程<br />2,各个线程的执行<br />3,等待线程的结束<br />涉及的线程函数主要有:<br />1,int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict a原创 2010-09-25 21:15:00 · 2297 阅读 · 1 评论 -
linux下C语言编程3-连接PostgreSQL
PostgreSQL开发了libpq库,可供C语言编写外部程序以连接PG数据库。在C程序中,开头需要加载libpq库,#include "libpq-fe.h"即可,注意是引号。编译这个程序:gcc -I/usr/local/pgsql/include -o pq PQresult.c -L/usr/local/pgsql/lib -lpq-I/usr/local/pgsql/include是PG安装后的include目录。-L/usr/local/pgsql/lib 是PG安装后的lib目录。下面给出一个原创 2010-09-15 15:42:00 · 7230 阅读 · 2 评论 -
linux下C语言编程2-makfile的简单使用
<br />本文通过例子介绍makefile最简单的使用,其他的规则或简化等不在本文范围中。<br />假如我们编写了一个文件main.c,我们编译最常用的方法就是gcc -o main main.c,<br />但一个项目不能只有一个文件,对于这许多文件,我们该如何去编译呢?<br />于是程序员们使用一个工具去编译,这就是make,当程序有变动时,只需敲写make,回车即可。<br />为了执行make,我们要为项目编写一个很重要的文件Makefile。<br />假如我们只有两个文件a.c和b.c,我原创 2010-09-15 14:45:00 · 1486 阅读 · 0 评论 -
linux下C语言编程7-信号量与共享内存
<br />当我们使用共享内存时,必然要面对一个问题:并发。信号量可以控制共享资源的申请和释放,起到锁的目的,有效的解决了并发带来的种种问题。<br />共享内存的使用见《linux下C语言编程4-使用共享内存实现进程间通信2》。<br />信号量的函数见《linux下C语言编程6-信号量函数semget() semop() semctl() 》。<br />下面给出一个例子:<br />服务端:#include <stdio.h>#include <string.h>#includ原创 2010-10-28 15:44:00 · 4702 阅读 · 0 评论