摘要: 在使用linux系统的过程中,对于系统管理员或者是程序开发者而言,学会shell是一件非常重要的事情,下面总结一下,学习bash shell 的过程首先要了解什么是shell,上网一查到处都是解释。其次要知道怎么写shell,这是关键。有语言开发基础的人对于shell的学习会有很大的帮助,而有linux开发经验的人shell的学习那就更加神速。shell当中无非那么几个点结合着c语言比较一下1:结构 顺序 分支 循环2:输入输出3:变量定义和变量类型4:linux命令二1:如果熟练掌握linux命令,4就解决了,如果不会,学linux命令2:c语言的分支结构 if-else case shel 阅读全文
posted @ 2011-03-21 15:27 jerryking 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 程序会在运行中输出日志,并是通过java的日志类进行输出的。而如果关掉SSH运行程序,就会丢失这些信息。直观的解决办法是将输出到控制台的日志重定向到文件中,于是我将命令改为:sh auto.sh console.txt &。不过事实并没像我想的那样,console.txt虽然被创建了,而日志并没有写在其中。后来请教Robert Chen,他让我用sh auto.sh console.txt 2&1 & 命令试一下,我输入了这个隐晦的命令之后,原本输出到控制台的日志内容终于被重定向到console.txt了。下面来详细分析一下这条命令:sh auto.sh 运行shell脚本conso 阅读全文
posted @ 2011-01-04 15:59 jerryking 阅读(2413) 评论(0) 推荐(0) 编辑
摘要: 选择有意义的变量名和使用注释使用空格分隔一个函数的概念上的多个部分 阅读全文
posted @ 2011-01-04 11:03 jerryking 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 发现的有用的东西就收藏了c语言发送邮件Linux下使用c语言发送邮件领导交代一个任务,需要将服务器上的df -hl的执行结果定时发给他。尝试使用sendmail来发邮件,但是后来放弃了,并不是所有的服务器上都安装了sendmail。于是,就用c写一个吧,还能够指定邮件服务器地址和端口,会更灵活些。目标是创建程序qmail,然后通过命令qmail my@163.com your.txt将your.txt的内容发送给my@163.com。在网上找了半天,没有一个例子能够完全跑起来,有些是提问题的,最总问题解决了却不告诉别人,这人真可恨。虽然这些代码都是复制粘贴来的,但是本着公益的宗旨,就不追究版权 阅读全文
posted @ 2011-01-03 15:59 jerryking 阅读(2905) 评论(0) 推荐(0) 编辑
摘要: IT现在一流行的词语叫“IT民工”,有人风趣的成为“挨踢”。。。。。。但凡看过这个词语,或是身在其位的工程师而言都会有些不解,IT不是一个高智商,高科技的产业吗,为什么还要成为IT民工。我第一次听到这个词语是在twitter的一个follower的聊天中,无意间看到的。工资一万多,刚工作两年,已然很不错了,为何要称自己是IT民工?民工在大多数人眼里是做着辛苦的工作,但只有微薄收入的人,没有什么技术含量靠着力气吃饭。  我想了很久,为什么要称为IT民工。终于有一天,当我想到CRUD时,我明白了。一个软件工程师的工作是什么?多数人在做的就是CRUD(更有意思的是某大学的计算机专业一位教java的老 阅读全文
posted @ 2011-01-01 16:34 jerryking 阅读(1654) 评论(0) 推荐(0) 编辑
摘要: Fork的系统调用代码在linux/arch/i386/kernel/process.c中:asmlinkage int sys_fork(struct pt_regs regs){return do_fork(SIGCHLD, regs.esp, ®s, 0, NULL, NULL);}Sys_fork系统调用通过 do_fork()函数实现,通过对do_fork()函数传递不同的clone_flags来实现fork,clone,vfork。Syn_clone和syn_vfork的系统调用代码如下:asmlinkage int sys_clone(struct pt_regs regs 阅读全文
posted @ 2010-12-31 01:10 jerryking 阅读(1796) 评论(0) 推荐(1) 编辑
摘要: linux通过clone()函数实现fork,这个调用通过一些列的参数标志来指明父子进程需要的共享资源。fork,vfork和_clone库函数都根据个字需要的参数标志去调用clone。然后由clone调用do_fork().  do_fork完成了创建中的大部分工作,它的定义在kernel/fork.c中。该函数调用copy_process函数,然后让进程开始运行。  copy_process完成的工作:  @调用dup_task_struct()为新进程创建一个内核栈、thread_info结构和task_struct,这些值与当前进程的值相同。此时,子进程与父进程的描述符是玩去昂相同的。 阅读全文
posted @ 2010-12-31 01:07 jerryking 阅读(754) 评论(0) 推荐(0) 编辑
摘要: 内核编程时不能访问c库内核编程时必须使用GNU C内核编程时缺少像用户空间那样的内存保护机制内核编程时浮点数很难使用内核只有一个很小的定长堆栈由于内核支持异步中断,抢占和SMP,因此必须时刻注意同步和并发要考虑可移植性的重要性------------------------------------------------------------------------------------------------GNU C1、内联函数(inline);GNU的C编译器支持内联函数,反应出他的工作方式,函数会在调用他的位置进行展开。这么做可以消除函数调用和返回所带来的开销(寄存器存储和恢复), 阅读全文
posted @ 2010-12-28 00:20 jerryking 阅读(360) 评论(0) 推荐(1) 编辑
摘要: 共享内存------总结 共享内存是允许两个或多个进程共享一给定的区域。因为数据不需要在客户机和服务器之间复制,所以这是最快的一种IPC.使用共享内存的唯一诀窍就是多个进程对一定区域的同步存取。若服务器将数据放到共享内存区,则在服务器做完这一操作之前,客户机不应该去取这些数据。通常信号量被用来实现对共享内存存取的同步。要使用一块共享内存首先要分配他,随后需要访问这个共享内存块的每一个进程都必须将这个共享内存绑定到自己的地址空间。当完成通讯之后,所有进程都要脱离绑定。并由一个进程释放该共享内存。   分配一个新的共享内存会创建新的内存页面。因为所有进程都希望共享对同一块内存的访问,只应由一个进程 阅读全文
posted @ 2010-12-24 13:18 jerryking 阅读(2642) 评论(0) 推荐(3) 编辑