
linux C
文章平均质量分 68
ganghuige
IT小小鸟
展开
-
Linux C 环境下不带缓冲的I/O操作函数
摘要:本文主要介绍Linux C 环境下不带缓冲的文件I/O操作函数——open(),creat(),read(),write(),lseek(),close()。结合实例,简单地利用单进程和多进程对同一个文件的操作,加深对这些函数的理解。正文:一、Open(): 打开或原创 2011-09-26 14:19:47 · 3524 阅读 · 3 评论 -
创建多级路径
由于linux只有创建单级路径的库函数(如果有创建多级路径的库函数,麻烦通知在下),参考了网上的一些代码,觉得它们都有不足之处,遂整合完善之,以示下文,如有还有不足之处,还请指正,多谢合作!#include #include #include #include #include int mk_multy_dir(char *muldir);int main()原创 2012-02-01 11:24:11 · 749 阅读 · 0 评论 -
校验和的计算/校验算法
这里使用算法和IP头部校验算法一致 计算CheckSum:将报文CheckSum字段初始化为0,将整个报文使用下列get_checksum()函数进行计算,将其结果填入报文的CheckSum字段。 校验CheckSum:将整个报文使用下列get_checksum()函数进行计算,若计算结果为0,则校验正确,否则校验失败。 计算/校验算法: unsigne转载 2016-11-03 14:52:13 · 4132 阅读 · 0 评论 -
jsoncpp库使用例子
从json格式的字符串中解析读://g++ jsoncpp_read_sample.cpp -I/usr/local/include/jsoncpp -ljsoncpp#include #include #include int main(void) { std::string strjson = "{\"key1\":\"value1\",\"array\":原创 2016-10-19 17:53:55 · 2123 阅读 · 0 评论 -
pthread_sigmask 控制线程的信号掩码
示例1:/* 示例一:屏蔽信号SIGINT 来源:http://www.leoox.com/?p=321 编译:gcc pthread_sigmask1.c -lpthread 运行后,你发现你按下CTRL+C(触发SIGINT信号),这个程序根本停不下来。因为SIGINT信号已经如我们所愿被屏蔽掉了。*/#include #include #include #转载 2016-12-13 10:48:43 · 5788 阅读 · 0 评论 -
__sync_fetch_and_add系列的命令
__sync_fetch_and_add系列的命令,发现这个系列命令讲的最好的一篇文章,英文好的同学可以直接去看原文。Multithreaded simple data type access and atomic variables __sync_fetch_and_add系列一共有十二个函数,有加/减/与/或/异或/等函数的原子性操作函数,__sync_fetch_and_ad转载 2016-12-08 10:02:32 · 708 阅读 · 0 评论 -
linux 信号
一、概念信号是运载消息的工具,是消息的载体。在linux世界中,信号是进程间通信的方式之一,它提供了处理异步事件的一种方法。信号是软中断,一个进程收到某信号后可以执行一个信号处理函数(捕捉信号),与CPU收到一个中断请求在原理上是一样的。进程收到信号后,也可以采用系统的默认动作,忽略信号、终止或停止进程。但是有两个信号是不能被忽略和捕捉:SIGKILL和SIGSTOP。早期的信号机制只是一原创 2011-11-02 09:39:58 · 1604 阅读 · 1 评论 -
linux 精灵函数
void daemon() { int pid, fd; if ((pid = fork()) == -1) exit(1); if (pid != 0) exit(0); if (setsid() == -1) exit(1); if ((pid = fork()) == -1) exit(1); if (pid != 0) exit(0); //for (int i = 0;转载 2015-07-27 15:44:22 · 550 阅读 · 0 评论 -
Linux如何避免僵死进程
僵尸进程的避免方法:方法一: 忽略SIGCLD信号:signal(SIGCHLD, SIG_IGN),系统将不产生僵死进程。方法二: 两次深度fork(),子进程退出,让孙子进程成为孤儿进程,从而init进程将负责清除这个孤儿进程。原创 2016-09-26 15:18:57 · 376 阅读 · 0 评论 -
Linux子进程继承父进程的文件描述符
Linux子进程可以很方便地继承父进程的文件描述符原创 2017-09-05 10:42:45 · 4462 阅读 · 1 评论 -
Linux 创建多个子进程
Linux 创建多个子进程#include<stdio.h> #include<stdlib.h> #include<unistd.h> //pid_t pid; /* * num:当前已经创建的子进程数 * max:需要创建的子进程数 */ void createsubprocess(int num,int max) { pid_t转载 2016-02-04 17:24:35 · 994 阅读 · 0 评论 -
计算字符c第一次出现在字符数组src的下标
#include#include/* 功能:计算字符c第一次出现在字符数组src的下标 * example: strcgap("abc", 'c') 返回2 * 参数:src,源字符串;c,字符; * 返回值:若c在src中返回字符c第一次出现在字符数组src的下标,范围:[0,strlen(src)-1] * 失败返回-1。 */int s原创 2015-07-27 11:16:48 · 879 阅读 · 0 评论 -
linux 定时器函数
先看代码:例1,alarm()#include #include #include #include void alarm_handler(int sig){ printf("hello!--sig:%d\n",sig); alarm(1);}int main(){ if (signal(SIGALRM, alarm_handler)原创 2011-11-18 11:07:50 · 2213 阅读 · 0 评论 -
深入浅出fork()
先看一个简单的例子1:#include #include int main(){ pid_t pid; int i; char *str = "hello!"; for (i = 0; i<2; i++) { if ((pid = fork()) < 0) { perror("fork"); return -1; } els原创 2011-11-17 16:33:04 · 522 阅读 · 0 评论 -
解析进程参数
在启动一个进程前,有时会给进程传一些参数,如./main 3,ps -aux等。在控制终端传参数很简单,只要输一串字符串,操作系统会给我们分解参数。现在在代码中,我们有时也会有这样的需求,用exec启动一个进程,有时会传参数给进程。我不知道有没有这样的库函数实现了这种功能,所以就自己写了一个。#include char **parse_argument(const char *args原创 2011-12-09 16:01:05 · 1120 阅读 · 0 评论 -
解析文件路径
有时候在编程时会碰到文件路径的解析,如提取一个文件路径中的文件名、文件所在目录,文件的后缀名等。下面写了一个小函数以实现这些功能。#include #include typedef struct file_pathname{ char mini_pathname[1024]; /*文件的路径和名字(不带扩展名)*/ char fdir[1024];原创 2011-09-27 17:49:33 · 2324 阅读 · 3 评论 -
关于全局变量
一个源程序有几个模块组成:模块一:log.h, log.c 模块二:aaa.h, aaa,c 模块三:bbb.h, bbb.c模块二和模块三都要用到模块一。但是模块一中又使用了一些全局变量,这些全局变量都定义在log.c中。显然,模块二和模块三会共享模块一中的全局变量。可以写个小程序测试一下:模块一:log.h#ifndef LOG_H#define LOG原创 2012-01-13 18:18:15 · 767 阅读 · 0 评论 -
获取系统日期
/* get the local system date */int get_system_date(char *str_date){ struct tm *tp=NULL; time_t t; time(&t); tp = (struct tm *)localtime(&t); sprintf(str_date, "%04d%02d%02d", tp原创 2013-03-28 03:19:04 · 702 阅读 · 0 评论 -
从配置文件取参数
/*从配置文件取参数*/int GetParameter(char *File,char *Section,char *Keyword,char *Buffer,int Size){ FILE *fp; char buf[400],tmpbuf[400]; char Sec[400] ,Key[400]; int SecFlag = 0; char *ptb , *psen转载 2013-04-23 16:01:42 · 796 阅读 · 0 评论 -
linux system()函数
/********************************************************************************* Description : wrap system()** Parameter : void** Return : 0 :success; -1 :fail** Author : Ke转载 2015-02-12 11:01:23 · 667 阅读 · 0 评论 -
时间格式化函数strftime
#include #include #include int main() { char timebuf[100]={0}; time_t timep; struct tm *p_tm; timep = time(NULL); p_tm = localtime(&timep); /*获取本地时区时间*/ st原创 2015-06-12 18:52:25 · 1217 阅读 · 0 评论 -
linux下的argv与environ变量
linux下environ = argv + argc + 1,其中1是argv结束的NULL指针,并且它们指向的数据存储在连续的内存块中。原创 2017-08-29 13:54:01 · 1361 阅读 · 0 评论