摘要:
我们在Linux环境下开发程序,少不了要自己编写Makefile,一个稍微大一些的工程下面都会包含很多.c的源文 件。如果我们用gcc去一个一个编译每一个源文件的话,效率会低很多,但是如果我们可以写一个Makefile,那么只需要执行一个make就OK了,这 样大大提高了开发效率。但是Makefile的语法规则众多,而且缺乏参考资料,对于初学者来说,写起来还是有一定的难度,往往令很多人望而生畏。下面我 们介绍一个比较通用而且简洁的Makefile,大家只要对它稍作修改就可以用在你们自己的工程里了。现在假设我们有一个工程叫my_project,工程源码目录下面有app1.c,app2.c,app 阅读全文
摘要:
/************** * readtest.c * **************/#include unistd.h#include sys/types.h#include errno.hmain(){int pipe_fd[2];int pipe_fd2[2];pid_t pid;char r_buf[100];char w_buf[4];char* p_wbuf;int r_num;int cmd;memset(r_buf,0,sizeof(r_buf));memset(w_buf,0,sizeof(w_buf));p_wbuf=w_buf;if(pipe(pipe_ 阅读全文
摘要:
void *memset(void *s,int c,size_t n) 总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。例子 :main(){ char *s="Golden Global View"; clrscr(); //clear screenmemset(s,'G',6); printf("%s",s); getchar(); return 0; } memset() 函数常用于内存空间初始化。如: char str[100]; memset(str,0,100); memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为 阅读全文
摘要:
system(执行shell 命令)相关函数fork,execve,waitpid,popen表头文件#i ncludestdlib.h定义函数int system(const char * string);函数说明system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。返回值=-1:出现错误 =0:调用成功但是没有出现子进程 0:成功退出的子进程的id如果system 阅读全文
摘要:
最近在做一个在开发板启动后,程序运行前首先检查一下网络是否已经连通的东西。参考了网上的一些方法,现在整理一下。(使用system(ping IPaddress)也可以办到) 其实问题的关键是,如何设置connect函数能够在指定的时间内返回。如果直接connect一个IP地址,不成功的话将会是一个漫长的等待时间。测试了一下2分钟内没有反映,但是网上有人说是75秒,还需要进一步确认啊!过程如下:(1)调用fcntl,将socket置为非阻塞模式; (2)connect(); (3)判断connect()的返回值,一般情况会返回-1,这时你还必须判断错误码如果是EINPROGRESS,那说明co 阅读全文
摘要:
printf输出颜色和ANSI控制码(高亮,下划线,闪烁,光标位置,清屏等)给printf的输出加上些特效比如颜色,可以让打印信息更鲜明,在debug的时候特别有用。颜色:#define NONE "\033[m"#define RED "\033[0;32;31m"#define LIGHT_RED "\033[1;31m"#define GREEN "\033[0;32;32m"#define LIGHT_GREEN "\033[1;32m"#define BLUE "\033[0;32;34m"#define LIGHT_BLUE "\033[1;34m"#define DARY_GRA 阅读全文
摘要:
//基于fork()系统调用//#include "sys/types.h"//包含pid_t等的声明//#include "sys/file.h"//#include "unistd.h"//包含pipe(),fork()等的声明 /*在一般的较新的linux系统(如Ubuntu)中,以上头文件的引入不是必须的,用gcc编译时不会报error*//*如果出现关于pid_t的错误,可以包含以上头文件中任意一个,或者包含stdlib.h*//*如果出现类似于“不兼容的隐式声明”或“incompatible implicit declaration of built-in function *** 阅读全文
摘要:
最近学习了linux的多线程,就写了个测试处理器多线程性能的例子,里面用到了 线程,信号量,互斥锁等,写得比较麻烦,呵呵,但是整体思路用来学习还是不错的.里面多由详细的中文注释;#include stdio.h#include unistd.h#include stdlib.h#include pthread.h#include time.h#include sys/time.h#include semaphore.h#include string.h#include sys/wait.h#define TEST1_NUM 10000 //第一个测试建立的线 阅读全文
摘要:
相关函数:scandir, opendir, readdir, alphasort表头文件:#includedirent.h定 义函数:intscandir(const char *dir, struct dirent **namelist, nt (*select)(conststructdirent *), nt (*compar)(const struct dirent **, const struct dirent**));函数说明:scandir()会扫描参数dir指定的目录文件,经由参 数select指定的函数来挑选目录结构至参数namelist数组中,最后再调用参数compa 阅读全文
摘要:
如何利用多进程,来实现文件的拷贝?在我们学习IO的时候,曾经利用文件IO函数,标准IO函数都实现了对文件的拷贝,那么在我们学习过进程间通信后,就可 以创建多个进程来完成对同一个文件的读写。例如让父进程写文件的前半部分,子进程来写文件的后半部分,因为两个进程间是可以并发执行的,所以将会节约一部 分时间,提高执行的效率。那么怎样才能实现这个功能?我们以文件IO为例,边讲述如何实现的同时,也给大家说下为什么这样写的原因,希望能给大家得到些启发。首先来看下用文件IO函数实现拷贝文件的程序:#include sys/types.h#include sys/stat.h#include fcnt 阅读全文