
linux/gnu编程
文章平均质量分 64
ti_tantbx
这个作者很懒,什么都没留下…
展开
-
linux中静态库的生成和应用
基本上整整一天都在看关于linux下如何构建静态、共享、动态库的章节,多多少少有了一些领悟。现在来总结一下。库是目标文件的一个集合或容器。将有关联的文件整合到一个库中,可以简化开发人的工作。文件将静态库中需要的部分整合到自己生成的目标文件中,不再需要静态库。静态库举个例子:定义一个API头文件,中包含2个函数,但函数本身并不在头文件中#ifndef原创 2011-11-24 11:57:34 · 713 阅读 · 0 评论 -
【进程通信】消息队列简单例子
常用的进程间通信方法,消息队列,共享内存,信号量数组直接看程序#include #include #include #include int main(void){ int msgid; msgid = msgget(100, IPC_CREAT | 0640); printf("msgid = %d\n", msgid); retur原创 2011-12-16 15:44:09 · 1020 阅读 · 0 评论 -
【系统基础】write函数
继续文件操作,write函数#include #include #include #include #include #include #define FNAME "./test"int main(void){ int fd; fd = open(FNAME, O_WRONLY | O_TRUNC); write(fd, "hel原创 2011-12-12 10:13:15 · 748 阅读 · 0 评论 -
【系统基础】read函数与lseek函数
继续文件操作,前面介绍了打开和写入,这章介绍读出和文件指针偏移头文件就不写了#define FNAME "./test"int main(void){ int fd; char ch; fd = open(FNAME, O_RDWR); while(read(fd, &ch, 1) != 0) {原创 2011-12-12 10:54:24 · 1459 阅读 · 0 评论 -
【系统基础】open函数
对文件的操作是linux/unix里最基本的一种操作,现在举个例子#include #include #include #include int main(void){ int fd; // fopen(..., "w"); fd = open("./test", O_WRONLY | O_CREAT | O_TRUNC, 0644);原创 2011-12-12 09:58:15 · 883 阅读 · 0 评论 -
文件时间与系统时间
每个文件是有三个时间的,分别是st_atime,st_mtime和st_ctime。st_atime: 最后一次访问时间,如果使用read函数读某个文件,会改变文件的这个时间st_mtime:最后一次修改时间,如果使用write函数写某个文件,会改变文件的这个时间st_ctime:最后一次修改文件权限时间,如果使用chmod修改了文件的权限,会改变这个时间怎样获取这三个原创 2011-12-07 17:52:49 · 5952 阅读 · 0 评论 -
【进程通信】popen与pclose,创建一个管道连接到另一个进程中
管道是一种初级的进程间通信的办法,但简单的办法通常使用起来更加方便。因为工作中用到一点,所以先少量写一点,研究多了再慢慢补充。先看看怎么用popen。#include #include #include #define SIZE 1024int main(void){ FILE *fp; char buffer[SIZE]; fp原创 2011-12-07 17:31:01 · 1375 阅读 · 0 评论 -
如何写一个简单的守护(精灵)进程原型
这里首先假设读者知道守护进程的大概概念,下面我们直接看程序。//****************环境,OS = Ubuntu 10.4 编译器 = gcc 4.5.2******************//int main(int argc, char **argv){ //因为下面要关掉某些信号,所以需要 struct sigaction sa; i原创 2011-11-28 15:00:10 · 1461 阅读 · 0 评论 -
main函数参数详解
main函数的原型:int main(int argc, char *argv[]);那么这两个传进来的参数是什么意思呢。其实是运行这个程序时带进来的参数,比如这样一段源代码#include #include int main(int argc, char *argv[]){ int i = 0, j; for(; argv[i] != NULL; i++) {原创 2011-11-28 11:21:04 · 1737 阅读 · 0 评论 -
GNU编译器:gcc中的预编译宏
* 预定义的宏 * __NASE_FILE__ 源文件的完整路径名,和 __FILE__ 不同,被引用的文件仍然是原来文件名 * __CHAR_UNSIGNED__ 用于指定该机器上 char 是无符号类型 * __cplusplus 使用 C++ 编译器编译 * __DATE__ 编译时的日期 * __FILE__ 编译文件名转载 2011-11-25 16:41:49 · 1602 阅读 · 0 评论 -
linux C内存分配
内存映射结构: 1、32位地址线寻址4G的内存空间,其中0-3G为用户程序所独有,3G-4G为内核占有。 2、struct page:整个物理内存在初始化时,每个4kb页面生成一个对应的struct page结构,这个page结构就独一无二的代表这个物理内存页面,并存放在mem_map全局数组中。 3、段式映射:首先根据代码段选择子cs为索引,以GDT值为起始地址的段描述表中选择转载 2013-09-21 20:07:58 · 2654 阅读 · 0 评论