存档

‘linux学习’ 分类的存档

进程通信——无名管道

2009年7月20日

linux进程间通信方式有很多种,包括管道通信、消息队列、共享内存、信号量、套接字等。管道通信分为有名管道和无名管道,其中最简单的当属无名管道。无名管道只能用于父子进程间的通信,无法在网络中使用。

我理解的管道实质上就是一个共享文件,其中一个进程负责向该管道写入数据,另一个进程就可以按照先入先出的原则从中读取数据,但是该共享文件的使用是互斥的,即同一个时刻只能进行读或者写里面的其中一个动作,不能兼而有之。共享文件的大小也是事先确定的,如果超出大小就会发生溢出。

在解释无名管道之前,先回顾一下创建子进程的方法,在linux下,创建子进程的系统调用原形为:int fork();返回值是生成子进程的进程号,如果返回-1则意味着创建失败。

创建管道的方法:int pipe(int file_descriptor[2]);

读取数据方法:int read(int pipe_fd,char *buffer,size_t len);

写入数据的方法:int write(int pipe_fd,char *buffer,size_t len);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include 
 
#include 
 
#define INPUT 0
 
#define OUTPUT 1
 
int main()
 
{
 
int file_descriptors[2];
 
/*定义子进程号 */
 
pid_t pid;
 
char buf[BUFFER_LEN];
 
int returned_count;
 
/*创建无名管道*/
 
pipe(file_descriptors);
 
/*创建子进程*/
 
if ((pid = fork()) == - 1)
 
{
 
printf("Error in fork\n");
 
exit(1);
 
}
 
/*执行子进程*/
 
if (pid == 0)
 
{
 
printf("in the spawned (child) process...\n");
 
/*子进程向父进程写数据,关闭管道的读端*/
 
close(file_descriptors[INPUT]);
 
write(file_descriptors[OUTPUT], "test data", strlen("test data"));
 
exit(0);
 
}
 
else
 
{
 
/*执行父进程*/
 
printf("in the spawning (parent) process...\n");
 
/*父进程从管道读取子进程写的数据,关闭管道的写端*/
 
close(file_descriptors[OUTPUT]);
 
returned_count = read(file_descriptors[INPUT], buf, sizeof(buf));
 
printf("%d bytes of data received from spawned process: %s\n",
 
returned_count, buf);
 
}
 
}

linux学习

(转载)yum是什么

2009年3月12日

一. yum是什么
yum = Yellow dog Updater, Modified主要功能是更方便的添加/删除/更新RPM包.它能自动解决包的倚赖性问题.它能便于管理大量系统的更新问题
注:为什么要使用yum而不用apt,最简单的原因,Fedora自带

二. yum特点
*可以同时配置多个资源库(Repository)
*简洁的配置文件(/etc/yum.conf)
*自动解决增加或删除rpm包时遇到的倚赖性问题
*使用方便
*保持与RPM数据库的一致性

三. yum安装
Fedora自带#rpm -ivh yum-2.0.4-2.noarch.rpm

四. yum配置
注:修改和增加配置文件中的资源库,加快下载速度和拥有更多可更新的rpm包
将/etc/yum.conf的内容全部替换为
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=fedora-release
tolerant=1
exactarch=1

[fedora-us-1]
name=Fedora Core 1 — Fedora US mirror
baseurl=ftp://mirrors.kernel.org/fedora.us/fedora/fedora/1/i386/yum/os

[fedora-us-1-updates]  

name=Fedora Core 1 updates — Fedora US mirror
baseurl=ftp://mirrors.kernel.org/fedora.us/fedora/fedora/1/i386/yum/updates

 

[fedora-us-1-stable]  

name=Fedora Linux (stable) for Fedora Core 1 — Fedora US
mirror
baseurl=ftp://mirrors.kernel.org/fedora.us/fedora/fedora/1/i386/yum/stable

 

[freshrpms]
name=Fedora Linux $releasever – $basearch – freshrpms
baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms
 

五. yum应用
注:当第一次使用yum或yum资源库有更新时,yum会自动下载所有所需的headers放置于/var/cache/yum目录下,所需时间可能较长.

 

检查有哪些可更新的rpm包
#yum check-update

安装rpm包,使xmms可以播放mp3  

#yum install xmms-mp3

 

安装mplayer,同时自动安装相关的软件  

#yum install mplayer

 

删除licq包,同时删除与该包有倚赖性的包  

#yum remove licq
注:同时会提示删除licq-gnome,licq-qt,licq-text,非常方便

 

系统更新(更新所有可以升级的rpm包,包括kernel)  

#yum -y update

 

每天定期执行系统更新
#chkconfig yum on
#service yum start
六. yum指令详解
*rpm包的更新

检查可更新的rpm包
#yum check-update

更新所有的rpm包
#yum update

更新指定的rpm包,如更新kernel和kernel
source
#yum update kernel kernel-source

大规模的版本升级,与yum
update不同的是,连旧的淘汰的包也升级
#yum upgrade
*rpm包的安装和删除

安装rpm包,如xmms-mp3
#yum install xmms-mp3

删除rpm包,包括与该包有倚赖性的包

#yum remove licq
注:同时会提示删除licq-gnome,licq-qt,licq-text
*yum暂存(/var/cache/yum/)的相关参数
清除暂存中rpm包文件
#yum clean packages

 

清除暂存中rpm头文件
#yum clean headers

清除暂存中旧的rpm头文件
#yum clean oldheaders

清除暂存中旧的rpm头文件和包文件

#yum clean 或#yum clean all
注:相当于yum clean packages + yum clean oldheaders
*rpm包列表

 

列出资源库中所有可以安装或更新的rpm包

#yum list

 

列出资源库中特定的可以安装或更新以及已经安装的rpm包

#yum list mozilla
#yum list mozilla*
注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm包

 

列出资源库中所有可以更新的rpm包

#yum list updates

 

列出已经安装的所有的rpm包
#yum list installed

列出已经安装的但是不包含在资源库中的rpm包  

#yum list extras
注:通过其它网站下载安装的rpm包
*rpm包信息显示(info参数同list)

 

列出资源库中所有可以安装或更新的rpm包的信息

#yum info

 

列出资源库中特定的可以安装或更新以及已经安装的rpm包的信息

#yum info mozilla
#yum info mozilla*
注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm包的信息

 

列出资源库中所有可以更新的rpm包的信息  

#yum info updates

 

列出已经安装的所有的rpm包的信息  

#yum info installed

 

列出已经安装的但是不包含在资源库中的rpm包的信息  

#yum info extras
注:通过其它网站下载安装的rpm包的信息

 

*搜索rpm包
搜索匹配特定字符的rpm包
#yum search mozilla
注:在rpm包名,包描述等中搜索

搜索有包含特定文件名的rpm包
#yum provides realplay

七.
安全的更新freshrpms.net的rpm包
安装freshrpms.net的GPG key
#rpm –import
http://freshrpms.net/packages/RPM-GPG-KEY.txt

编辑/etc/yum.conf,增加以下信息到尾部 gpgcheck=1

 

[freshrpms]
name=Fedora Linux $releasever – $basearch – freshrpms
baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms

 

 

注:
检查GPG Key
# rpm -qa gpg-pubkey*

显示Key信息
#rpm -qi gpg-pubkey-e42d547b-3960bdf1

删除Key
#rpm -e gpg-pubkey-e42d547b-3960bdf1

转载于:http://www.lupaworld.com/35714/viewspace_15909.html

linux学习, 操作系统 ,

linux安装

2008年10月13日

好久就想装linux,但因为种种原因一直没有付诸实施。上一周感觉自己学习效率没有预想的高,所以就“玩”linux了。我装的是Ubuntu7.0.4,结合安装介绍一下其安装过程。

1.

准备分区:如果电脑中装有windows系统,则需要单独给Ubuntu划分一个空白分区,最简单的分区做法是在windows操作系统下,右击我的电脑—管理—磁盘管理,删除最后一个分区。在安装时这一步我省略了,因为在装windows操作系统的时候预留了20G的空间

2.

详细安装步骤

1)插入光盘,设置系统默认启动方式为从光盘启动,会出现如下欢迎界面

在此界面下按F2键选择语言为中文,然后点击Start
or install Ubuntu,等待一段时间将进入桌面,然后点击install图标

2)选择语言,这可以根据个人习惯和喜好选择,例如选择简体中文。

3)选择时区,我选择的是默认值上海

4)选择键盘布局,一般选择默认的U.S.English就可以


5)准备分区,这是安装系统过程中最重要的一步。系统提供了几种分区方式,参考各个网站大多推荐手动分区,这样可以避免出现意外。在空白分区(free
space
)中新建分区,类型选择主分区或者逻辑分区均可,文件系统选择ext3或者xfs(建议选择ext3,因为此文件系统出错的概率较小),分区大小和分区数根据个人喜好安排,但至少保证有两个分区,一个根分区(/)和一个交换分区(swap),其中交换分区一般和内存大小一样即可。




6)如果系统中有
windows用户,会提示选择哪一个帐户导入该系统,即所说的文件迁移






7)填写用户信息,即在linux系统下的除了root用户之外的另一个用户,该步中填写的信息即为用户名和密码

8)确认安装前信息

9)开始安装

10)安装后准备重启,重启之前取出光盘

总起来来说,Ubuntu的安装比较容易,因为整个过程都是图形化界面操作,没有想象中的复杂的命令操作,但是安装之后的配置就比较复杂了,上周折腾了好久还是没配置好,等做好了一部分再进行总结吧。加油,逐渐的了解并熟悉linux。

linux学习