博客专栏  >  编程语言   >  Unix/Linux程序设计

Unix/Linux程序设计

主要记录了Unix/Linux下对文件、内存、多任务、进程间通信以及网络编程的知识点。用最简单的实例帮助你了解Unix/Linux下开发的各种机制。希望能和大家一起交流。

关注
4 已关注
35篇博文
  • 几种服务器模型

    TCP测试用客户程序 每次运行客户程序,在命令行参数指定服务器的ip地址,端口,发起连接的子进程数,和一个待发送的字符串数据,客户程序将模拟多个客户根据指定的子进程数创建子进程来并发的连接到服务器,并...

    2014-08-30 20:37
    1443
  • udp套接字使用信号驱动式I/O

    信号驱动式I/O的本质就是:进程预先告知内核当某个描述符发生事件时,内核会向该进程发送SIGIO信号通知进程,进程可在信号处理函数中进行处理 进程可以通过fcntl打开O_ASYNC标志或i...

    2014-07-22 20:00
    1316
  • SO_REUSEADDR 套接字选项应用实例

    网络上关于SO_REUSEADDR套接字选项用来解决地址重用问题的资料不少,但只停留在文字表达上,并没有实例,很容易误导初学者,并产生疑惑,此处不再赘述。下面通过一个简短的例子来展示如何在项目中合理的...

    2014-07-08 00:33
    1413
  • 心跳机制详解

    应用场景: 在长连接下,有可能很长一段时间都没有数据往来。理论上说,这个连接是一直保持连接的,但是实际情况中,如果中间节点出现什么故障是难以知道的。更要命的是,有的节点(防火墙)会自动把一定时间之内没...

    2014-07-06 12:31
    2612
  • 用udp实现广播通信

    特点: 1.数据传输不用建立连接,所以不可靠(符合udp协议的特点) 2.数据的发送是面向整个子网的,任何一台在子网内的计算机都可以接收到相同的数据; 3.广播用于udp和原始IP,不能用于TC...

    2014-06-25 16:25
    2376
  • setjmp与longjmp

    在C中有时我们会使用goto语句用于执行跳转,但是不能跨越函数 #include void func2() { int num = 0; dst2: if (num > 0) { p...

    2014-06-18 22:40
    756
  • 非阻塞connect

    一、用途: 1.提高程序效率 默认情况下connect函数是阻塞的,它发起TCP连接的三路握手。完成一个connect需要花费一个RTT时间(从本地主机到对端再回到本地),RTT的波动范围很大,局域网...

    2014-06-07 10:47
    871
  • ioctl获取网络接口信息

    linux下网络程序经常在启动执行后使用ioctl获取主机的全部网络接口信息, 例如接口地址、是否支持广播,是否支持多播等。 函数原型 #include int ioctl(int...

    2014-06-09 23:26
    1431
  • MSG_PEEK标志

    MSG_PEEK标志可以用来读取套接字接收队列中可读的数据,一些情况会用到它,比如为了避免不阻塞而先检查套接字接收队列中可读的数据长度,再采取相应操作。 当然,不阻塞也可采取其他的方法,例如非阻塞式I...

    2014-06-06 21:34
    2981
  • 套接字设置超时总结

    涉及套接字I/O操作上设置超时的方法: 1.调用alarm

    2014-05-06 12:34
    949
  • 创建守护进程

    在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程。守护进程是在后台运行不与任何控制终端关联,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于...

    2014-05-02 15:03
    843
  • socket抓取网页

    #include #include #include #include #include #include #include #include #include #include ...

    2014-04-29 10:58
    958
  • UDP中使用connect函数

    先看一个例子,下面是一个采用UDP协议的客户程序,调用sendto向服务器端发送数据,而服务器并不启动,sendto返回,表示套接字缓冲区中有可用空间,程序会阻塞在recvfrom。 net.h ...

    2014-04-24 12:34
    1224
  • I/O复用模型之poll

    poll提供的功能与select类似,poll效率高。 原型: #include int poll(struct pollfd *fds, nfds_t nfds, int timeout); ...

    2014-04-19 15:02
    844
  • shutdown函数

    发送一行文本给服务器,然后等待应答,这就形成了一个简单的回射服务器。如果把客户和服务器之间的网络作为全双工管道考虑,请求从客户向服务器发送,应答从服务器回发给客户。下图展示了客户与服务器之间的数据分组...

    2014-04-18 20:25
    1019
  • I/O复用模型之select

    在编程中我们用到最多的是阻塞式I/O模型。例如,进程调用recvfrom,它直到数据报到达后从内核缓冲区复制到进程缓冲区才返回。若没有数据报到达,或者没有复制到进程缓冲区,recvfrom将一直阻塞。...

    2014-04-18 17:36
    1049
  • fork()后父子进程共享文件

    fork函数的特点概括起来就是“调用一次,返回两次”,在父进程中调用一次,在父进程和子进程中各返回一次。 fork的另一个特性是所有由父进程打开的描述符都被复制到子进程中。父、子进程中相同编号的文件...

    2014-04-10 11:04
    1013
  • 网络IPC之字节序

    运行在一台计算机上的进程相互通信时,一般不考虑字节序顺序。字节序是一个处理器架构特性,用于指示像整数这样的大数据类型内部字节顺序。 大端字节序,最大字节地址对应数字最低字节 小端字节序,最小字节地址...

    2014-03-13 11:12
    920
  • linux进程间通信之信号量

    信号量是一种用于提供不同进程间或一个给定进程的不同线程间同步的手段。它是一个计数器,用于多进程对共享数据的访问。 为获取共享资源,进程要执行下列操作: 1)测试控制该资源的信号量 2)若值为正,则进...

    2014-03-12 17:01
    995
  • linux进程间通信之消息队列

    消息队列是消息的链表,存放在内核中并由消息队列标识符标识。 对于系统中的每个消息队列,内核维护一个定义在头文件中的信息结构 struct msqid_ds {     struct ipc_perm...

    2014-03-11 10:18
    1238

docker
91672
nginx
846233
Boost C++ Library
863538
Python
958394
C++11新特性
77301

img博客搬家
img撰写博客
img专家申请
img意见反馈
img返回顶部