前面讲述的fork函数的基本用法,下面通过两个程序来说明fork函数同步与异步之间的关系: <1>通过fork函数实现在父进程下的四个兄弟子进程(即异步) : 函数实现代码: #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <stdlib.h> #include <sys/wait.h> int main (void) { pid_t pid…
分类: 计算机系统 linux2010-06-01 23:35 60721人阅读 评论(105) 收藏 举报 linux2010存储  一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事.    一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间.然后把原来的进程的所有值都复制到新的新进程中,…
最近又温习了一遍Linux中的信号知识,发现有很多东西以前没有注意到,就通过这篇博客记录一下,巩固一下知识点. 一,信号基础: 信号是什么?为了回答这个问题,首先要从异常说起,这里的异常不是指c++/java中的Exception,而是指控制流的一种突变. 控制流指一个程序的指令序列,它在最简单的情况是平滑的,意味着上一条指令地址和下一条指令地址在存储器中是相邻的,但是程序也可以通过跳转,函数调用和函数返回来造成控制流产生突变,这是一种必要的机制,使得程序能够对由程序变量表示的内部程序中的变化做…
 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示 /lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件 /sbin 系统管理命令,这里存放的是系统管理员使用的管理程序 /tmp 公用的临时文件存储点 /root 系统管理员的主目录(呵呵,特权阶级) /mnt 系统提供这个目录是让用户临时挂…
getline()函数是什么?百度百科这样解释:      getline不是C库函数,而是C++库函数.它会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束.1)到文件结束,2)遇到函数的定界符,3)输入达到最大限度. linux标准C中使用条件: #define _GNU_SOURCE #include <stdio.h> 函数声明: ssize_t getline(char **lineptr, size_t *n, FILE *stream);  …
在阅读源码的过程中,发现找不到fork函数的定义.后来在linux/init/main.c中找到了这样一条语句 static inline _syscall0(int,fork) 原来这里就是fork函数的定义. 系统在linux/include/unistd.h有一个宏定义. #define _syscall0(type name)…
#include "sys/types.h" #include "stdio.h" #include "stdlib.h" #include "unistd.h" int main() { pid_t pid; /* 需要引入sys/types.h 和 unistd.h两个头文件 创建进程 返回子进程的id 创建失败,返回-1;并提示错误信息, EAGAIN:表示fork()函数没有足够的内存用于复制父进程的分页表和进程结构数…
上一篇微博留下了这几个函数,现在我们来分析它们         sanity_check_meminfo();         arm_memblock_init(&meminfo, mdesc);         paging_init(mdesc);         request_standard_resources(mdesc); 在上一微博有展现根据启动参数初始化meminfo,记录了物理内存的开始和大小 sanity_check_meminfo(); 有mmu的情况下这个函数才有意义…
SSH 密令控制台 user/pwd 一:停止tomcat 1,cd .. 进入根目录 2,cd home/ 3,ll 4,cd bin/ 进入tomcat bin目录 5,ll 6,ps -ef | grep conf 过滤进程  7,kill -9 进程编号 8,发布class文件 二:发布后重启tomcat   8,./startup.sh ============================================= bzip2recover 功能说明:用来修复损坏的.bz2…
出处:http://www.vaikan.com/what-are-the-most-useful-swiss-army-knife-one-liners-on-unix/ Linux命令行里的"瑞士军刀" 这里说的"瑞士军刀"是指那些简单的一句命令就能完成其它高级语言一大片代码才能完成的工作. 下面的这些内容是Quora网站上Joshua Levy网友的总结: 通过sort/uniq获取文件内容的交集.合集和不同之处:假设有a.b两个文本文件,文件本身已经去除了重…
33.less sample.txt 分页输出文件内容到屏幕 34./search content (搜索内容) 可以将文档中有searchcontent 的行输出到屏幕 35.grep science sample.txt 输出science字符串所在的行,(grep是linux中的一种工具程序,可以用来文件内的查找.) 36.grep - i science sample.txt (忽略大小写,输出匹配的行到屏幕) 37.grep –v science sample.txt 输出不匹配的行到…
前言:整理了一份linux常用命令手册,与大家分享.这是一些比较常用的命令. 我已经整理成一份PDF带书签的手册,可以到CSDN免费下载. 下载地址:http://download.csdn.net/detail/lianggzone/6266467 第一章 注销.重启.关机 1.注销 输入“exit”命令或者使用Ctrl+D组合键 2.重启 输入“reboot”命令或“shutdown –r now”命令 3.关机 输入“halt”命令或“shutdown –h now”命令 4.shutdo…
(1)字符测试函数 isalnum(测试字符是否为英文字母或数字) isalpha(测试字符是否为英文字母) isascii(测试字符是否为ASCII码字符) isblank(测试字符是否为空格字符) iscntrl(测试字符是否为ASCII码的控制字符) isdigit(测试字符是否为阿拉伯数字) isgraph(测试字符是否为可打印字符) islower(测试字符是否为小写英文字母) isprint(测试字符是否为可打印字符) isspace(测试字符是否为空格字符) ispunct(测试字…
转自:http://blog.csdn.net/ordeder/article/details/41630945 版权声明:本文为博主(http://blog.csdn.net/ordeder)原创文章,未经博主允许不得转载.   目录(?)[-] 虚拟空间 进程虚拟地址的组织 1 虚拟空间用户空间 2 内存区间 系统物理地址的组织 1 用户空间页面目录映射关系 2用户空间的映射 3内核空间虚拟地址的映射 相关数据结构关系图   Ordeder原创文章,原文链接: http://blog.csd…
转自:http://blog.csdn.net/ordeder/article/details/41654509 版权声明:本文为博主(http://blog.csdn.net/ordeder)原创文章,未经博主允许不得转载.   目录(?)[-] 1背景知识 1 进程的用户空间 12 地址映射 malloc 和free 1 用户层 2 内核层 3 虚拟地址与物理地址 总结 参考 附录   本文介绍malloc的实现及其malloc在进行堆扩展操作,并分析了虚拟地址到物理地址是如何实现映射关系.…
1:下载mysql解压版包去官网下载www.mysq.com 下载.下载linux通用版本就好了 2.基本配置 首先,我们准备好Linux环境,我们使用CentOS 5.8进行试验安装.第一步,我们需要将下载好的MySQL压缩版通过FTP/SFTP上传到Linux服务器上. --创建目录 [root@bspdev ~]# cd / [root@bspdev /]# mkdir mysql [root@bspdev /]# ls -l | grep mysql drwxr-xr-x  2 root…
最近公司要求调试一个内核,启动时有问题,所以就花了一点时间看看内核启动. 看的过程中总结了一点东西,希望可以帮助大家调试内核. 当我开始看的时候,第一件事是从网上搜集资料,不看不知道,一看吓一跳!牛人太多了,像这种内核启动的上古代码早就被人分析的彻彻底底.这注定我写的只能是烂微博了. 为了此微博有存在的必要,我会显示内核启动打印的代码位置(用绿色表示)及出现错误打印的原因(用红色表示),同时我会尽力用添加打印(用蓝色字,同时给出对应于本人平台的打印结果)或实例来说明一些细节. 注意我的是linu…
Linux下的截图工具scrot 基于命令行 先下载:scrot apt-get install scrot 对该工具的操作: 分为以下几个部分 1.抓取整个桌面 scrot pic.jpg 2.抓取窗口 scrot -bs pic.jpg 3.区域截图 scrot -s pic.jpg 4.定时截图 scrot -cd 10 pic jpg 5.生成缩略图 scrot -t 70% pic.jpg 6.更改截图品质 scrot -q 80 pic.jpg…
Linux协议栈代码阅读笔记(一) (基于linux-2.6.21.7) (一)用户态通过诸如下面的C库函数访问协议栈服务 int socket(int domain, int type, int protocol); int bind(int sockfd, const struct sockaddr *addr,  socklen_t addrlen); int connect(int sockfd, const struct sockaddr *addr,  socklen_t addrl…
在Linux下使用ls -l或者ll命令可以查看文件和文件夹的权限.结果显示类似于: drwxrwxrwx,这里分为四组,分别为文件类型,文件所有者的权限(读写执行),文件所有者所在组用户的权限(读写执行),其他用户的权限(读写执行),这里不再详述,相信只要用Linux的用户都知道.这里直接文件夹的权限进行说明: Linux中目录的权限: w:     删除/修改文件夹的权限 r:     以列表形式列出文件夹中文件的权限 x:     进入文件夹/创建文件/创建目录的权限…
Linux下发布QT程序 概述 无论在windows下还是在linux下,可执行程序的运行都依赖于相关的运行库,我们需要将依赖的库找到放到特定的位置,让可执行文件能够找到.在不知道可执行文件依赖哪些库时,有时可以让它自己告诉你,例如直接运行程序会输出缺少的库名,执行ldd命令查看可执行文件的依赖库. 所以发布程序就是将必要的文件放到指定的位置,并修改某些系统配置. 我发布的环境为X86下的ubuntu 10.04-desktop. QT程序依赖的库 在linux中,一般依赖的库会放在/usr/l…
Linux协议栈代码阅读笔记(二)网络接口的配置 (基于linux-2.6.11) (一)用户态通过C库函数ioctl进行网络接口的配置 例如,知名的ifconfig程序,就是通过C库函数sys_ioctl实现网络接口的配置的. 具体方法大致如下,即建立一个socket,得到一个fd,然后在此fd上执行ioctl即可完成各种操作(例如,查询/配置mac.ip.mtu,启动/停止网络接口). int fd = socket(AF_INET, SOCK_DGRAM, 0); ioctl(fd, SI…
linux中静态库和动态库的制作与使用 一.静态链接库 1.首先编写模块程序example.c.example.h 2.使用gcc -c example.c -o example.o编译example.c 3.使用命令 ar cqs libexample.a example.o对库进行打包,完成后使用命令 cp libexample.a /usr/lib 完成转移 4.创建test.c文件,编译 gcc  -lexample(指定链接库名称) test.c -o  test  完成. 二.动态链…
  日志平台运行一段时间,发现日志有部分丢失,通过检查日志,发现有两个问题导致数据丢失,一个是遇到空行后,日志停止收集,还有就是kafka监控offsets时变小,通过分析代码,找到如下方法: 空行问题:   在系统稳定运行一段时间之后,发现了一个致命性的bug就是在遇到空行时,无法自动跳过,导致识别为文件结束,再次读取还是空行,跳入了死循环 解决办法:   解决的办法也非常简单,就是增加对文件大小与当前行数的比较,两者相等则是到达文件末尾,否则继续读取下一行,直到文件末尾 源码: offset…
   问题 最近我都在忙一个课件录制系统.这两天发现其中服务器端的一个更新数据库的php脚本运行有问题,一些本应该是系统自带函数却无法运行.于是我展开了调查... 服务器端是centos系统,其中php可能是系统安装时带的,我测试php命令发现有问题于是我重新安装了php5.我是下载的php5安装包来编译安装的.configure的时候应该要加上--with-mysql=mysql安装目录,不然编译会报错“ configure: error: Cannot find MySQL header f…
在如今的网络界,也许TC知道的人并不多了,这篇文章做留恋吧. 以前研究TC时记录下的讲解与配置文件. eth1:192.168.1.1,内网口  业务需求:保证正常的网页浏览,FTP,SMTP,POP3,对其它的所有应用加以限制,以免影响正常业务的使用.  1.让交互数据包保持较低的延迟时间,也就是说上载或下载文件不会打扰SSH/telnet等.  2.上载或下载期间有合理的速率用于网页浏览,即使http属于一种大量数据传输,也不应受其它传输影响太大  3.对FTP-data限速,不会占用所有带…
一.首先查看是否安装samba,命令为:rpm -qa | grep samba 出现如下包表示已经安装,否则没有安装 samba-winbind-clients-3.5.10-125.el6.i686 samba-client-3.5.10-125.el6.i686 samba-common-3.5.10-125.el6.i686 samba-3.5.10-125.el6.i686 二.安装samba服务器,找到这三个软件包 samba-3.5.10-125.el6.i686.rpm samb…
1.准备工作 首先去官网下载好 apache-nutch-1.3-bin.zip 解压apache-nutch-1.3-bin.zip [pig@CentOs ]$ unzip   apache-nutch-1.3-bin.zip 解压后生成的文件夹 nutch-1.3 Apache官只有最近版本,没有1.3的了,我已将相关版本分享到 http://yunpan.cn/Q9LQVKuhBnSJ3 2.新建项目,导入jar包以及配置文件和插件 a.在eclipse中新建一个Java项目,取名 nu…
在系统平稳运行一年的基础上,为提供更好的服务,现针对java,kafka,flume,zk,统一进行版本升级,请各位小伙伴跟着走起来,不要掉队啊! 名称 老版本号 新版本号 jdk 1.7.0_25 1.8.0 kafka 2.10-0.8.0.1 2.10-0.10.2.1 flume 1.6.0 1.7.0 zookeeper 3.4.6 3.4.8 jdk,zookeeper,flume: 这两个中间件平滑升级,没有特殊的地方,参考其他博客就好 kafka: 这个的变化还是很大的,咱们详细…
1.传统的JEE Web Server 传统的JEE中,如果我们想要部署一个Web Application,我们需要首先安装一个Container Server,如JBoss,WebLogic,Tomcat等.在安装这些Container Server作为我们的开发或者部署环境时,我们还需要注意配置的一致性. 配置好Container Server以后,如果我们想开发一个Web Application,我们先吭哧吭哧写好web.xml配置文件,其实大部分时间我们也不会自己写,都是东抄抄西抄抄.然…