linuxfifo命令 linux kfifo

linux里面文件的文件的st-mode,里面的fifo是什么东西?文件里面的fifo是什么东西?

在st_mode的特征位定义里有:

公司主营业务:成都网站建设、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出永修免费做网站回馈大家。

S_IFIFO 0010000 //先进先出(fifo)

fifo是管道文件,分为分为无名管道和有名管道。

无名管道例如:ls-l | grep name 使用管道可将一个命令的输出作为另一个命令的输入。命令执行时,无名管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是单独构成一种文件系统,并且只存在于内存中。无名管道是临时的,执行完成后会自动消失。由于没有名字,无名管道只能用于亲缘关系的进程间通信.

有名管道即FIFO,在文件系统中有自己文件名路径名,这样即使两个不相关(没有亲缘关系)的进程,只要可以访问该路径,就能够彼此通过创建FIFO相互(经常性的而非临时的)通信。有名管道的名字存在于文件系统中,但内容还是存放在内存中。

S_IFIFO 即表示有名管道文件。具体介绍和应用,还请翻阅“进程间通信--管道”的相关内容。

Linux列出当前目录下的文件和目录用什么命令

显示目录文件用linux中ls命令

ls

命令可以说是linux下最常用的命令之一。

-a

列出目录下的所有文件,包括以

.

开头的隐含文件。

-b

把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。

-c

输出文件的

i

节点的修改时间,并以此排序。

-d

将目录象文件一样显示,而不是显示其下的文件。

-e

输出时间的全部信息,而不是输出简略信息。

-f

-U

对输出的文件不排序。

-g

无用。

-i

输出文件的

i

节点的索引信息。

-k

k

字节的形式表示文件的大小。

-l

列出文件的详细信息。

-m

横向输出文件名,并以“,”作分格符。

-n

用数字的

UID,GID

代替名称。

-o

显示文件的除组信息外的详细信息。

-p

-F

在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通

文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套

接字(sockets)。

-q

用?代替不可输出的字符。

-r

对目录反向排序。

-s

在每个文件名后输出该文件的大小。

-t

以时间排序。

-u

以文件上次被访问的时间排序。

-x

按列输出,横向排序。

-A

显示除

“.”和“..”外的所有文件。

-B

不输出以

“~”结尾的备份文件。

-C

按列输出,纵向排序。

-G

输出文件的组的信息。

-L

列出链接文件名而不是链接到的文件。

-N

不限制文件长度。

-Q

把输出的文件名用双引号括起来。

-R

列出所有子目录下的文件。

-S

以文件大小排序。

-X

以文件的扩展名(最后一个

.

后的字符)排序。

-1

一行只输出一个文件。

--color=no

不显示彩色文件名

--help

在标准输出上显示帮助信息。

--version

在标准输出上输出版本信息并退出。

只列出子目录

1.

ls

-F

|

grep

/$

或者

alias

sub

=

"ls

-F

|

grep

/$"(linux)

2.

ls

-l

|

grep

"^d"

或者

ls

-lL

|

grep

"^d"

(Solaris)

计算当前目录下的文件数和目录数

下面命令可以分别计算当前目录下的文件和目录个数:

#

ls

-l

*

|grep

"^-"|wc

-l

----

to

count

files

#

ls

-l

*

|grep

"^d"|wc

-l

--

to

count

dir

显示彩色目录列表

打开/etc/bashrc,

加入如下一行:

alias

ls="ls

--color"

下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了,

其中颜色的含义如下:

1.

蓝色--目录

2.

绿色--可执行文件

3.

红色--压缩文件

4.

浅蓝色--链接文件

5.

灰色--其他文件

ls

-tl

--time-style=full-iso

sshd

ls

-ctl

--time-style=long-iso

linux中的pipe和fifo的区别

在linux进程间通信(IPC)可以通过信号量、文件系统、消息队列、共享内存还有管道来实现的。其中消息队列、内存管理是在SystemV中提出的。进程通信间涉及到了管道,而且管道在shell命令中也大有用处。

那就简要说说管道:管道顾名思义,你可以将其理解为日常生活中的管子,一边流入,一边流出。它可以有半双工和全双工。半双工就是只能一边流入,另一边流出;全双工则是一边可以流入,也可以流出。

1、pipe就是一种半双工的管道。其中,fd[1]用来向管道中写入数据,而fd[0]在另一端用来读出数据。如果现有两个进程要利用pipe进行通信。此时,就要保证只能有一个写入端和一个读出端,即:fd[1]和fd[0]只能有一个。

2、fifo是一种全双工,即:它的一端既可以进行读取fd[0],也可以进行写入fd[1]。正因为它的这种通信方式,使其可以用来涉及基于C/S模式的网络通信。

Linux下有没有办法能看到FIFO的大小

FIFO和pipe的区别在于:

FIFO在文件系统中有对应的inode,可以通过ls命令查看。

sh-3.2# ls -lhF 。/fifo_file

100 prwxrwxrwx 1 root root 0 Jan 1 1970 。/fifo_file|

sh-3.2#

正因为它有一个名字,所以任何进程都可以访问它,所以FIFO可用于任意两个进程之间的通信。

pipe没有名字,在现有文件系统中无法查看到它的存在。

它只能用于父子进程、兄弟进程等具有血缘关系的进程间通信。

创建FIFO的方法如下:

1. 调用umask系统调用来设定创建文件的权限,

#include 《sys/types.h》

#include 《sys/stat/h》

mode_t umask(mode_t mask);

2. 调用unlink系统调用先删除已经存在的fifo,

#include 《unistd.h》

int unlink(const char *pathname);

3. 调用mkfifo库函数去创建一个FIFO文件


网站栏目:linuxfifo命令 linux kfifo
本文URL:http://hbruida.cn/article/hjdooc.html