摘要: 在回射客户/服务器程序中,服务器只能处理一个客户端的请求,如何同时服务多个客户端呢?在未讲到select/poll/epoll等高级IO之前,比较老土的办法是使用fork来实现。网络服务器通常用fork来同时服务多个客户端,父进程专门负责监听端口,每次accept一个新的客户端连接就fork出一个子进程专门服务这个客户端。但是子进程退出时会产生僵尸进程,父进程要注意处理SIGCHLD信号和调用wait清理僵尸进程,最简单的办法就是直接忽略SIGCHLD信号。双击代码全选123456789101112131415161718192021222324252627282930313233343536 阅读全文
posted @ 2013-11-12 14:31 Fight_4_ever 阅读(901) 评论(0) 推荐(0) 编辑
摘要: 一。在socket编程时,常遇到下面的地使用错误:Cann't bind server socket ! : Address already in use 。二。说明:可以使用 bind API 函数来绑定一个地址(一个接口和一个端口)到一个套接字端点。可以在服务器设置中使用这个函数,以便限制可能有连接到来的接口。也可以在客户端设置中使用这个函数,以便限制应当供出去的连接所使用的接口。bind 最常见的用法是关联端口号和服务器,并使用通配符地址(INADDR_ANY),它允许任何接口为到来的连接所使用。bind 普遍遭遇的问题是试图绑定一个已经在使用的端口。该陷阱是也许没有活动的套接字 阅读全文
posted @ 2013-11-12 09:10 Fight_4_ever 阅读(905) 评论(0) 推荐(0) 编辑
摘要: 很多Linux高手都喜欢使用screen命令,screen命令可以使你轻松地使用一个终端控制其他终端。尽管screen本身是一个非常有用的工具,byobu作为screen的增强版本,比screen更加好用而且美观,并且提供有用的信息和快捷的热键。想象一下这样一个场景:你通过Secure Shell(ssh)链接到一个服务器,并且工作在远程shell下。你需要打开另一个shell窗口这样你可以使得两个shell窗口同时运行。也许当你在第2个窗口中敲入命令行时,需要第1个窗口的输出。这时你会怎么处理?大部分人都会选择打开另一个SSH链接,事实上这是浪费而且没有必要的。Byobu命令可以使得你在一个 阅读全文
posted @ 2013-11-11 09:03 Fight_4_ever 阅读(1140) 评论(0) 推荐(0) 编辑
摘要: 1、ibus输入法Ubuntu 系统安装后已经自带了ibus输入法,在英语环境下默认不启动。配置ibus自动启动可以在ubuntu系统菜单上选择System --- Preferences --- Startup Applications,在该窗口中增加一个程序:Name: ibus-daemonCommand: ibus-daemon -d -x -ribus默认提供的中文输入法比较弱智,需要额外安装ibus-pinyin,命令如下:sudo apt-get install ibus-pinyin这 时,还需要将ibus-pinyin输入法启动。在ubuntu系统菜单上选择System -- 阅读全文
posted @ 2013-11-10 16:41 Fight_4_ever 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 1.硬盘分区:1)计算机右键选择“管理”2)选择“磁盘管理”3)在选择一个剩余容量较大的盘,右键选择“压缩卷”,分出大于20的空间4)本人分出了30G,个人根据需要填写大于20G的空间即可。5)点击“压缩”,即完成分区,无须其他操作。我分区完成后的状态如下:2.Ubuntu安装包准备1)下载ubuntu的ISO文件2)将iso包复制到C盘根目录3)同时使用虚拟光驱打开iso,从其中casper文件夹中的initrd.lz,vmlinuz.efi提取到C盘根目录下3.安装EasyBCD,可以百度上搜索一个下载;4.EasyBCD添加启动项1)依次按图点击2)点击“配置”后,弹出3)在menu.l 阅读全文
posted @ 2013-11-09 19:20 Fight_4_ever 阅读(1571) 评论(3) 推荐(0) 编辑
摘要: 目标:成为合格的Linux平台C语言程序员技能:掌握C语言基本语法,掌握Linux平台系统调用,熟悉Linux平台开发流程,掌握anjuta以及glade使用方法,了解kernel结构编写高质量程序。步骤:1、学习C语言语法预计时间:30天参考书籍http://man.lupaworld.com/content/develop/c&c++/c/C_program_lang.zip2、学习linux平台系统调用预计时间:30天参考书籍http://man.lupaworld.com/content/develop/c&c++/linux_c/default.htm3、提高C编程技 阅读全文
posted @ 2013-11-08 16:35 Fight_4_ever 阅读(193) 评论(0) 推荐(0) 编辑
摘要: C程序调用shell脚本共有三种法子 :system()、popen()、exec系列函数call_exec1.c,内容为:system() 不用你自己去产生进程,它已经封装了,直接加入自己的命令exec 需要你自己 fork 进程,然后exec 自己的命令popen() 也可以实现执行你的命令,比system 开销小1)system(shell命令或shell脚本路径);system() 会调用fork()产生 子历程,由子历程来调用/bin/sh-c string来履行 参数string字符串所代表的命令,此命令履行 完后随即返回原调用的历程。在调用system()期间SIGCHLD 信号 阅读全文
posted @ 2013-11-08 11:03 Fight_4_ever 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 这是一个简单的C程序,展示了如何进行系统调用执行logout cd ls pwd pid rm mkdir mv cp等命令,这是一个简单的命令解释程序shell,其源代码如下:#include #include #include #include #include #include #include char parsecmd(char *);/************关于本文档*********************************************filename:用C语言编写一个Linux下的简单shell程序*purpose:展示了C语言如何进行系统调用执行logou 阅读全文
posted @ 2013-11-08 10:52 Fight_4_ever 阅读(2224) 评论(0) 推荐(0) 编辑
摘要: 先来看看下面一段代码:#include int main(){ char de_info[64]="DE_smartmedia:2.2.2154(121227225952b)"; char db[64]={0}; char version[64]={0}; sscanf(de_info,"DE_%s:%s",db,version); printf("###%s+++%s###\n",db,version);}运行的结果如下:###smartmedia:2.2.2154(121227225952b)+++###我们可以看到:后面的字符串 阅读全文
posted @ 2013-11-07 14:50 Fight_4_ever 阅读(1177) 评论(0) 推荐(0) 编辑
摘要: linux下的时间函数我们在编程中可能会经常用到时间,比如取得系统的时间(获取系统的年、月、日、时、分、秒,星期等),或者是隔一段时间去做某事,那么我们就用到一些时间函数。linux下存储时间常见的有两种存储方式,一个是从1970年到现在经过了多少秒,一个是用一个结构来分别存储年月日时分秒的。time_t 这种类型就是用来存储从1970年到现在经过了多少秒,要想更精确一点,可以用结构struct timeval,它精确到微妙。structtimeval{longtv_sec;/*秒*/longtv_usec;/*微秒*/};而直接存储年月日的是一个结构:structtm{inttm_sec;/ 阅读全文
posted @ 2013-10-28 14:53 Fight_4_ever 阅读(594) 评论(0) 推荐(0) 编辑