随笔分类 -  Linux

1
摘要:linux下进程间通信的几种主要手段:管道(Pipe)及有名管道(namedpipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数 阅读全文
posted @ 2013-11-25 22:40 mkdir 阅读(592) 评论(0) 推荐(0)
摘要:linux下进程间通信的几种主要手段:管道(Pipe)及有名管道(namedpipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数 阅读全文
posted @ 2013-11-25 22:29 mkdir 阅读(487) 评论(0) 推荐(1)
摘要:linux下进程间通信的几种主要手段:管道(Pipe)及有名管道(namedpipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数 阅读全文
posted @ 2013-11-25 22:25 mkdir 阅读(639) 评论(0) 推荐(0)
摘要:linux下进程间通信的几种主要手段:管道(Pipe)及有名管道(namedpipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数 阅读全文
posted @ 2013-11-25 22:22 mkdir 阅读(525) 评论(0) 推荐(0)
摘要:linux下进程间通信的几种主要手段:管道(Pipe)及有名管道(namedpipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数 阅读全文
posted @ 2013-11-25 22:17 mkdir 阅读(410) 评论(0) 推荐(0)
摘要:linux下进程间通信的几种主要手段:管道(Pipe)及有名管道(namedpipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数 阅读全文
posted @ 2013-11-25 22:09 mkdir 阅读(342) 评论(0) 推荐(0)
摘要:linux下进程间通信的几种主要手段:管道(Pipe)及有名管道(namedpipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数 阅读全文
posted @ 2013-11-25 22:03 mkdir 阅读(511) 评论(0) 推荐(0)
摘要:在编写程序时,我们经常回用到定时器。本文讲述如何使用select实现超级时钟。使用select函数,我们能实现微妙级别精度的定时器。同时,select函数也是我们在编写非阻塞程序时经常用到的一个函数。首先看看select函数原型如下:int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);参数说明:slect的第一个参数nfds为fdset集合中最大描述符值加1,fdset是一个位数组,其大小限制为__FD_SETSI... 阅读全文
posted @ 2013-11-02 22:26 mkdir 阅读(7090) 评论(0) 推荐(0)
摘要:1. 引言一般我们编程的时候,函数中形式参数的数目通常是确定的,在调用时要依次给出与形式参数对应的实际参数。但在某些情况下我们希望函数的参数个数可以根据需要确定,因此c语言引入可变参数函数。典型的可变参数函数的例子有printf()、scanf()等。例如:printf(“hello,world!”);其参数个数为1个。printf(“a=%d,b=%s,c=%c”,a,b,c);其参数个数为4个。如何编写可变参数函数呢?我们首先来看看printf函数原型是如何定义的。在linux下,输入man 3 printf,可以看到prinf函数原型如下:SYNOPSIS#include int pri 阅读全文
posted @ 2013-10-31 16:16 mkdir 阅读(1019) 评论(0) 推荐(0)
摘要:在linux网络编程【1-3】中,我们编写的网络程序仅仅是为了了解网络编程的基本步骤,实际应用当中的网络程序并不会用那样的。首先,如果服务器需要处理高并发访问,通常不会使用linux网络编程(三)中那样的多进程方式,因为那样相当耗系统资源。实际当中,网络程序多使用select、poll、epoll等多路IO复用来进行编写。在进入主题之前,我们先来了解一下linux的IO模型。现有的linux IO模型有5种:阻塞式IO模型,非阻塞式IO模型,IO复用模型,信号驱动式IO模型,异步IO模型。关于阻塞、非阻塞、同步、异步,甚至并发等待,这些概念一直没有很好的理解,特意翻阅一些资料和博文,汇总如下: 阅读全文
posted @ 2013-10-30 15:40 mkdir 阅读(685) 评论(0) 推荐(0)
摘要:Linux网络编程(三) wait()还是waitpid()Linux网络编程(二)存在客户端断开连接后,服务器端存在大量僵尸进程。这是由于服务器子进程终止后,发送SIGCHLD信号给父进程,而父进程默认忽略了该信号。为避免僵尸进程的产生,无论我们什么时候创建子进程时,主进程都需要等待子进程返回,以便对子进程进行清理。为此,我们在服务器程序中添加SIGCHLD信号处理函数。代码如下:#include #include #include #include #include #include #include #include #include #define SERV_PORT 1113#def 阅读全文
posted @ 2013-10-30 08:27 mkdir 阅读(1299) 评论(2) 推荐(4)
摘要:Linux网络编程(二) 使用多进程实现服务器并发访问。采用多进程的方式实现服务器的并发访问的经典范例。程序实现功能:1.客户端从标准输入读入一行文字,发送到服务器.2.服务器接收到客户端发来的文字后,原样返回给客户端.3.客户端接收到服务器的发来的文字后,输出到标准输出,然后继续以上步骤。服务器端过程:建立好监听套接字后,等待客户端的连接,接收到一个连接后,创建一个子进程来与客户端进行通信,主进程则继续等待其他客户端的连接。代码如下:#include #include #include #include #include #include #include #include #include 阅读全文
posted @ 2013-10-29 20:32 mkdir 阅读(1144) 评论(3) 推荐(2)
摘要:关于双链表实现,一般教科书上定义一个双向链表节点的方法如下:struct list_node{stuct list_node *pre;stuct list_node *next;ElemType data; }即一个链表节点包含:一个指向前向节点的指针、一个指向后续节点的指针,以及数据域共三部分。但查看linux内核代码中的list实现时,会发现其与教科书上的方法有很大的差别。来看看linux是如何实现双链表。双链表节点定义struct list_head { struct list_head *next, *prev;};发现链表节点中根本就没有数据域,这样的链表有什么用?linux内核中 阅读全文
posted @ 2013-10-29 09:02 mkdir 阅读(1531) 评论(3) 推荐(1)
摘要:一.概念介绍网络程序分为服务端程序和客户端程序。服务端即提供服务的一方,客户端为请求服务的一方。但实际情况是有些程序的客户端、服务器端角色不是这么明显,即互为客户端和服务端。我们编写网络程序时,一般是基于TCP协议或者UDP协议进行网络通信的。TCP:(Transfer Control Protocol)传输控制协议是一种面向连接的协议, 当我们的网络程序使用这个协议的时候,网络可以保证我们的客户端和服务端之间的传输是可靠的。UDP:(User Datagram Protocol)用户数据报协议是一种非面向连接的协议, 这种协议并不能保证我们的网络程序的连接是可靠的。我们编写的网络程序具体采用 阅读全文
posted @ 2013-10-26 12:33 mkdir 阅读(1389) 评论(2) 推荐(2)
摘要:第一部分:Sed基本用法sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。下面先来预览下sed的常用命令及参数。1. p命令.p命令用于输出匹 阅读全文
posted @ 2013-10-19 14:57 mkdir 阅读(2313) 评论(1) 推荐(0)
摘要:今天有位朋友在微博上问我这样一个问题: “@老码农的自留地 ,最近出于学习目的写一个管理系统,越到后边,越觉得自己前边的代码写得烂。前辈,我想让代码写得更好一点,能不能谈谈你的经验,给我指点一下!” 我在回复里刚写了几句,就意识到140个字很难把我的想法说清楚,本着知无不言言无不尽的好为人师精神,我决定把我的回答写成一篇博文。 首先要说明的是,我写这篇博客并不代表本人觉得自己的代码写得有多好... 阅读全文
posted @ 2013-10-12 20:40 mkdir 阅读(289) 评论(0) 推荐(0)
摘要:一:Makefile介绍:Makefile是为自动化编译而生。我们写好makefile文件后,只需要一个make命令,就可以完成整个项目的编译工作,大大提高了开发效率。也许刚开始学习编程时,你不会感觉到makefile的重要性。比如,你在linux环境下编写了一个叫hello.c的程序,然后通过输入:gcchello.c-ohello便生成名为hello可执行文件。随着我们编写的程序规模越来越大,你会发现用这种纯手工的做法去编译程序,是极其低效的。那么我们看看,如何通过编写makefile文件让程序的编译变得高效、自动化吧!二:makefile编写规则Makefile文件的作用是告诉make命 阅读全文
posted @ 2013-10-12 20:03 mkdir 阅读(1879) 评论(0) 推荐(0)
摘要:41.命令:ifconfigifconfig命令用于配置网络接口信息。如配置网络接口的ip地址,默认网关地址等,以便机器能够联通互联网。显示当前网络接口信息viidiot@ubuntu:~$ifconfigeth0Linkencap:EthernetHWaddr00:0c:29:b3:de:1cinetaddr:192.168.1.141Bcast:192.168.1.255Mask:255.255.255.0inet6addr:fe80::20c:29ff:feb3:de1c/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1RXp 阅读全文
posted @ 2013-10-05 11:09 mkdir 阅读(1335) 评论(0) 推荐(0)
摘要:也许你已经发现第一篇文章非常的有用,这篇文章是继对初级Linux用户非常有用的20个命令的一个延伸。第一篇文章的目的是为新手准备的而这篇文章则是为了Linux的中高级用户。在这里你将学会如何进行自定义搜索,知道正在进行的进程和停掉进程,如何使用Linux的强势功能和如何在系统内编译C,C++和JAVA程序。21. 命令: Find搜索指定目录下的文件,从开始于父目录,然后搜索子目录。注意: `-name‘选项是搜索大小写敏感。可以使用`-iname‘选项,这样在搜索中可以忽略大小写。(*是通配符,可以搜索所有的文件;‘.sh‘你可以使用文件名或者文件名的一部分来制定输出结果)注意:以上命令查找 阅读全文
posted @ 2013-09-22 20:56 mkdir 阅读(609) 评论(1) 推荐(2)
摘要:你打算从Windows换到Linux上来,还是你刚好换到Linux上来?哎哟!!!我说什么呢,是什么原因你就出现在我的世界里了。从我以往的经验来说,当我刚使用Linux,命令,终端啊什么的,吓了我一跳。我担心该记住多少命令,来帮助我完成所有任务。毫无疑问,在线文档,书籍,man pages以及社区帮了我一个大忙,但是我还是坚信有那么一篇文章记录了如何简单学习和理解命令的秘籍。这激发了我掌握Linux和使它容易使用的积极性。本文就是通往那里的阶梯。1. ls命令ls命令是列出目录内容(List Directory Contents)的意思。运行它就是列出文件夹里的内容,可能是文件也可能是文件夹。 阅读全文
posted @ 2013-09-22 20:53 mkdir 阅读(924) 评论(0) 推荐(1)

1