标签归档:C

Linux Epoll介绍和程序实例

1. Epoll 是何方神圣?

Epoll 可是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中正式引入,和 select 相似,其实都 I/O 多路复用技术而已 ,并没有什么神秘的。

其实在 Linux 下设计并发网络程序,向来不缺少方法,比如典型的 Apache 模型( Process Per Connection ,简称 PPC ), TPC ( Thread Per Connection )模型,以及 select 模型和 poll 模型,那为何还要再引入 ……

Linux内核软中断线程对于通用内核线程的启示

Linux 2.6.11版本的内核软中断线程ksoftirqd代码如下,下面框架可以看出对于,吞吐量与处理延迟两者之间的权衡。

软中断线程处理概括:

1、如果没有活干(没有软中断等待处理)就 schedule()切出,并从运行队列里面删除(由于任务状态已经变成TASK_INTERRUPTIBLE)

2、如果有活儿干,就把当前pending的软中断处理完,处理过程中检查如果本线程运行时间过长,则 schedule()切出(cond_resched()完成这一切),避免其他线程……..

函数指针和指针函数

【函数指针】

在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。

1.函数指针定义

函数类型 (*指针变量名)(形参列表);

“函数类型”说明函数的返回类型,由于“()”的…….

Linux下网络通信编程实例

服务器端和客户端使用TCP的流程图:

服务器端:socket->bind->listen->accept->recv/recvfrom->send/sendto->close

客户端:socket->connect->send/sendto->recv/recvfrom->close

其中服务器端首先建立起socket,然后调用本地端口的绑定,接着就开始与客服端建立联系,并接收客户端发送的消息。客户端则在建立socket之后调用connect函数来建立连接。
服务器端的源代码…….

Linux C 格式化输出时要注意的问题

在Linux下提供了以下函数提供格式化输出,printf,fprintf,sprintf,snprintf。这些函数的头文件定义都是stdio.h。为标准的C库函数。

printf提供标准的输出流,fprintf往特定的流中写数据。前者比较常见,用的也较多。

sprintf格式化输入到字符指针缓冲,这个函数自动的加入null byte到缓冲,但是返回值不包括这个结束字节。
使用sprintf函数意缓冲溢出问题,用户…….

Linux 程序信号处理

Linux下的信号名以SIG开头,如:SIGSEGV 段错误、SIGTERM 退出 等等,它们都在头文件中定义信号名和对应的值,并且信号的值都大于0。

产生信号的原因:

1.硬件异常:除零出错、无效内存的引用,如SIGSEGV表示进程访问了无效的内存地址

2.软件发送的信号:如SIGPIPE表示进程尝试写入到没有阅读的管道(或socket)时,SIGALRM进程计时器到期
3.用户按下某些终端按键:如按下Ctrl+C,产生SIGI…….

pthread_join函数及linux线程

这是从网上搜索到的,为了方便以后查询,所以就把它拿到自己的空间里来了。谢谢原作者!!^^

pthread_join函数及linux线程

pthread_join使一个线程等待另一个线程结束。

代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程……..

编写最酷的C语言代码

你正在使用最新、最酷的编程方法吗?你写的“超炫”代码具备无与伦比的可读性吗?——
我们为您提供最精彩的C语言编程技巧,这包括在代码中使用几条简单的宏定义(当然,你
的编译器必须支持中文的标识符和宏定义…….