![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言
aircoder
这个作者很懒,什么都没留下…
展开
-
socket参数详解:KeepAlive
TCP协议中有长连接和短连接之分。短连接在数据包发送完成后就会自己断开,长连接在发包完毕后,会在一定的时间内保持连接,即我们通常所说的Keepalive(存活定时器)功能。默认的Keepalive超时需要7,200,000 milliseconds,即2小时,探测次数为5次。它的功效和用户自己实现的心跳机制是一样的。开启Keepalive功能需要消耗额外的宽带和流量,尽管这微不足道,但在按流量...原创 2013-03-19 13:24:30 · 1286 阅读 · 0 评论 -
c语言特殊字符串复制
2.strcpy和memcpy主要有以下3方面的区别。2.1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。2.2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。2.3、用途不同。通常在复制字符串时用strcpy,而需要复...原创 2013-05-06 01:59:14 · 537 阅读 · 0 评论 -
fopen 使用错误总结
char buf[MAX_LINE]; /* 缓冲区 */ FILE *fp; char * p; int i=0; char * pp ; char path[] = "/home/aircoder/c/logs/ff.log"; pp = path;/* while(path[i]!='\0') { pp[i] = path[i]...原创 2012-11-22 20:30:53 · 1009 阅读 · 0 评论 -
atoi源码
原文: http://blog.csdn.net/eroswang/article/details/5804244isspace(int x) { if(x==' '||x=='/t'||x=='/n'||x=='/f'||x=='/b'||x=='/r') return 1; else return 0;...原创 2013-05-14 19:32:55 · 232 阅读 · 0 评论 -
浏览器访问linux c写的socket
使用c语言写了epoll的socket。使用浏览器访问,并且给浏览器写会接受过来的信息。但是在服务端不关闭socket的话,浏览器会一直链接,不会显示server写的信息。关闭了socket浏览器才会显示服务的写会的信息,。后来使用的wget进行了观察,发现当wget没有介绍的200的时候会尝试http0.9..说明浏览器会检查服务的200的返回值.没有接受到200 会一直接受,这个应该就是h...原创 2012-12-03 20:56:10 · 206 阅读 · 0 评论 -
判断两个一个链表是否存在循环(C专家编程中的问题)
判断两个一个链表是否存在循环(C专家编程中的问题)#include#include#include /**//*目的:检测指定的链表中是否存在循环*//**//*算法概要:同时指定p1,p2指向头节点,p1步长为1向后移,p2步长为2向后移*//**//*如果p1或p2指向NULL,说明不存在循环*//**//*如果存在循环,则p2经过循环必然会追上p1*//**/...原创 2013-06-24 15:35:34 · 169 阅读 · 0 评论 -
错误总结
1: s_http.c:21:5: 警告: 隐式声明与内建函数‘memcpy’不兼容 [默认启用] 加入这个: #include 因为 memcpy 需要原创 2013-02-17 16:21:47 · 66 阅读 · 0 评论 -
c 语言无符号类型使用注意,类型升级
#define SS sizeof(int) 5 int main() 6 { 7 8 int a = -1; 9 10 if( a < SS){ 11 // 不会输出,因为 ss 是为符号类型。而 a 是 是有符号类型的,两个比较 12 // 产生了,算术运算副的升级, 13 ...原创 2013-07-30 14:37:49 · 162 阅读 · 0 评论 -
c语言api
原型:extern int isalnum(int c);用法:#include 功能:判断字符变量c是否为字母或数字说明:当c为数字0-9或字母a-z及A-Z时,返回非零值,否则返回零。原创 2013-07-31 21:06:33 · 136 阅读 · 0 评论 -
c 专家编程
总结:-2>int * a = NULL; 10 int *s[3] = {a}; 11 int ss[3]={1,2,3}; 12 a = ss; 13 printf("%d,\n",*a); 14 printf("%d,\n",*(a+1)); 15 printf...原创 2013-08-13 17:06:12 · 87 阅读 · 0 评论 -
文件结束符EOF,system("stty raw")
>> 关于文件结束符EOFEOF 是 End Of File 的缩写。在C语言中,它是在标准库中定义的一个宏。人们经常误认为 EOF 是从文件中读取的一个字符(牢记)。其实,EOF 不是一个字符,它被定义为是 int 类型的一个负数(比如 -1)。EOF 也不是文件中实际存在的内容。EOF 也不是只表示读文件到了结尾这一状态(这种状态可以用 feof() 来检测),它还能表示 I/O ...原创 2013-08-14 10:47:12 · 626 阅读 · 0 评论 -
c++ 动态内存分配
先看一段代码:[cpp] view plaincopy #include using namespace std; void GetMe(char *p,int num) { p=(char*)malloc(sizeof(char)*num); } int ...原创 2013-08-28 22:35:46 · 135 阅读 · 0 评论 -
STDIN_FILENO的作用及与stdin 的区别
if(NULL == fgets(msg,100,stdin)){ 18 19 // msg 末尾有换行副(\n\0)1.STDIN_FILENO的作用STDIN_FILENO属于系统API接口库,其声明为 int 型,是一个打开文件句柄,对应的函数主要包括 open/read/write/close 等系统级调用。操作系统一级提...原创 2013-09-08 14:48:38 · 160 阅读 · 0 评论 -
负数转化为整数
负数转化为整数 int a = -1321313; 12 13 printf("1a: %d\n",a); 14 if (a < 0){ 15 16 a = -a; 17 } 18 19 20 printf("2a: %d\n",a); 整数 转化为字符...原创 2013-10-01 12:02:25 · 2406 阅读 · 0 评论 -
毗连“"aa"”和“"bb"”不能给出一个有效的预处理标识符,gcc编译错误表
gcc bug : ##’ cannot appear at either end of a macro expansion”‘##’不能出现在宏展开的两端”10.c: 在函数‘main’中:10.c:14:1: 错误:毗连“"aa"”和“"bb"”不能给出一个有效的预处理标识符 1 #include 2 3 #define MAX(a,b) ((a>...原创 2013-10-01 18:54:48 · 2045 阅读 · 0 评论 -
简单的linux -c http-client
#include#include #include#include#include#include "httpclient.h"#include#include#include#include const char * http_s = "http://";typedef struct{ char *url; int port; ...原创 2013-10-23 15:35:09 · 1014 阅读 · 0 评论 -
《APUE》:线程和fork(父子进程锁)
《Unix环境高级编程》这本书附带了许多短小精美的小程序,我在阅读此书的时候,将书上的代码按照自己的理解重写了一遍(大部分是抄书上的),加深一下自己的理解(纯看书太困了,呵呵)。此例子在Ubuntu10.04上测试通过。程序简介:多线程的进程通过fork函数创建子进程时,如果要清除各种锁的状态,可以通过调用pthread_atfork函数建立fork处理程序。//《APUE》程序1...原创 2013-04-29 21:07:42 · 224 阅读 · 0 评论 -
Linux多线程同步的几种方式
Linux多线程同步的几种方式 线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。 1)互斥锁(mutex) 通过锁机制实现线程间的同步。同一时刻只允许一个线程执行一个关键部分的代码。 int pthread_mutex_init(pthread_m...原创 2013-04-22 22:49:46 · 154 阅读 · 0 评论 -
sphinx 安装
[@zw-76-80 soft]$ rpm -ivh MySQL-shared-compat-5.1.66-2.glibc23.x86_64.rpmerror: can't create transaction lock on /var/lib/rpm/__db.000[@zw-76-80 soft]$ sudo rpm -ivh MySQL-shared-compat-5.1.66-2....原创 2013-04-10 19:54:15 · 88 阅读 · 0 评论 -
基础例子
1 #include 2 #include 3 int main() 4 { 5 char s[1024]; 6 char * ss = s; 7 char * who=" I"; 8 char * whom = " linux"; 9 sprintf(s, "%s love %s\n", who, whom); 10 prin...原创 2013-03-26 19:44:22 · 96 阅读 · 0 评论 -
linux多线程之pthread_cancel结束线程(防止死锁)
linux多线程之pthread_cancel结束线程摘要:这篇文章主要从一个 Linux 下一个 pthread_cancel 函数引起的多线程死锁小例子出发来说明 Linux 系统对 POSIX 线程取消点的实现方式,以及如何避免因此产生的线程死锁。目录:1. 一个 pthread_cancel 引起的线程死锁小例子2. 取消点(Cancellation Point)3...原创 2013-03-28 18:28:21 · 282 阅读 · 0 评论 -
pthread_mutex_destroy 信号量将阻塞!
#include 2 #include 3 #include 4 pthread_mutex_t command_mutex_ = PTHREAD_MUTEX_INITIALIZER; 5 pthread_cond_t command_cond_ = PTHREAD_COND_INITIALIZER; 6 int main(){ 7 8 pth...原创 2013-03-29 11:14:52 · 1105 阅读 · 0 评论 -
static volatile 使用问题
static volatile int k; 在。h 文件中这样写是错误的。但是都在一个。cpp中是ok的例如: 1 #include 2 3 using namespace std; 4 5 int main() 6 { 7 8 9 static bool volatile s = f...原创 2013-03-29 14:46:38 · 477 阅读 · 0 评论 -
linux系统父子进程共享端口
nginx 就是使用了父子进程 共享端口,所以nginx快速这个也算一个原因#include #include #include #include #include #include #include int main(){int sfp,nfp;struct sockaddr_in s_add,c_add;int sin_size;un...原创 2013-04-01 01:30:06 · 552 阅读 · 0 评论 -
epoll
二、工作模式epoll有2种工作方式:LT和ET。l LT(level triggered)是缺省的工作方式,并且同时支持block和no-block socket。在这种做法中,内核告诉你一个文件描述符是否就绪了,然后你可以对这个就绪的fd进行IO操作。如果你不作任何操作,内核还是会继续通知你的,所以,这种模式编程出错误可能性要小一点。传统的select/poll都是这种模型的代表...原创 2013-04-01 17:34:48 · 71 阅读 · 0 评论 -
linux 时间获取
1 #include 2 #include 3 4 int main() 5 { 6 7 int seconds = 0; 8 seconds = time(NULL); 9 10 time_t t; 11 t = time(NULL); 12 13 ...原创 2013-04-02 20:44:41 · 69 阅读 · 0 评论 -
exit()’与‘_exit()’
#define __NR_exit 1#define __NR__exit __NR_exit /* 摘自文件include/asm-i386/unistd.h*/ "__NR_"是在Linux的源码中为每个系统调用加上的前缀,请注意第一个exit前有2条下划线,第二个exit前只有1条下划线。Linux核心还提供了一些C语言函数库,这些库对系统调...原创 2013-04-03 11:04:55 · 95 阅读 · 0 评论 -
vfork() 使用注意
linux编译错误__new_exitfn: Assertion `l != ((void *)0)' failed2012-08-23 16:47, Tags: 420人阅读 创建进程:fork(), vforl()fork():创建进程后返回两个值,分别将子进程pid返回给父进程,将0返回给子进程。子进程完全复制 父进程的资源,并独立于父进程,有良好的并发性。...原创 2013-04-03 17:40:23 · 246 阅读 · 0 评论 -
makefile例子
CC = gccCPP = g++CFLAGS = -g -Wall -WerrorDEST = exeOBJECT = main.o ManagerService.o bloom.o$(DEST): $(OBJECT) $(CPP) $(CFLAGS) $(OBJECT) -o $(DEST) -leventbloom.o: bloom.c ...原创 2013-04-04 21:29:37 · 95 阅读 · 0 评论 -
linux 信号量
目录 SIGCHLD 描述编辑本段SIGCHLDSIGCHLD属于unix以及类unix系统的一种信号产生原因 siginfo_t代码值1,子进程已终止 CLD_EXITED2,子进程异常终止(无core) CLD_KILLED3,子进程异常终止(有core) CLD_DUMPED4,被跟踪子进程以陷入 CLD_TRAPPED5,子进程已...原创 2013-04-04 22:24:36 · 118 阅读 · 0 评论 -
Linux下的定时器
Linux下的定时器有两种,以下分别介绍: 1、alarm 如果不要求很精确的话,用 alarm() 和 signal() 就够了 unsigned int alarm(unsigned int seconds) 专门为SIGALRM信号而设,在指定的时间seconds秒后,将向进程本身发送SIGALRM信号,又称为闹钟...原创 2013-04-07 20:05:35 · 98 阅读 · 0 评论 -
alarm与pause
1 #include 2 #include 3 #include 4 #include 5 6 void signalTask(int signalNum) 7 { 8 9 fprintf(stdout,"has a signal..\n"); 10 11 } 12 13 void alarmiTask(int tim...原创 2013-04-07 20:12:32 · 90 阅读 · 0 评论 -
关于linux环境下信号SIGCHLD的排队机制
下面是关于在SIGCHLD的一遍网上的摘要,但是在linux中是不许要这样做的。 signal(SIGCHLD,SIG_IGN); 就可以了,我已经子啊ubuntu12.04上面做过了测试! 1 #include 2 #include 3 #include 4 #include 5 #include 6 int main() 7 { 8 ...原创 2013-04-07 22:13:48 · 308 阅读 · 0 评论 -
防止pause和alrm产生竞争
1 #include 2 #include 3 #include 4 #include 5 #include 6 static jmp_buf env_alrm; 7 8 9 void alarm_signal(int a) 10 { 11 longjmp(env_alrm,1); 12 13 } 14 ...原创 2013-04-08 22:51:30 · 116 阅读 · 0 评论