扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在st_mode的特征位定义里有:
公司主营业务:成都网站建设、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出永修免费做网站回馈大家。
S_IFIFO 0010000 //先进先出(fifo)
fifo是管道文件,分为分为无名管道和有名管道。
无名管道例如:ls-l | grep name 使用管道可将一个命令的输出作为另一个命令的输入。命令执行时,无名管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是单独构成一种文件系统,并且只存在于内存中。无名管道是临时的,执行完成后会自动消失。由于没有名字,无名管道只能用于亲缘关系的进程间通信.
有名管道即FIFO,在文件系统中有自己文件名路径名,这样即使两个不相关(没有亲缘关系)的进程,只要可以访问该路径,就能够彼此通过创建FIFO相互(经常性的而非临时的)通信。有名管道的名字存在于文件系统中,但内容还是存放在内存中。
S_IFIFO 即表示有名管道文件。具体介绍和应用,还请翻阅“进程间通信--管道”的相关内容。
显示目录文件用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进程间通信(IPC)可以通过信号量、文件系统、消息队列、共享内存还有管道来实现的。其中消息队列、内存管理是在SystemV中提出的。进程通信间涉及到了管道,而且管道在shell命令中也大有用处。
那就简要说说管道:管道顾名思义,你可以将其理解为日常生活中的管子,一边流入,一边流出。它可以有半双工和全双工。半双工就是只能一边流入,另一边流出;全双工则是一边可以流入,也可以流出。
1、pipe就是一种半双工的管道。其中,fd[1]用来向管道中写入数据,而fd[0]在另一端用来读出数据。如果现有两个进程要利用pipe进行通信。此时,就要保证只能有一个写入端和一个读出端,即:fd[1]和fd[0]只能有一个。
2、fifo是一种全双工,即:它的一端既可以进行读取fd[0],也可以进行写入fd[1]。正因为它的这种通信方式,使其可以用来涉及基于C/S模式的网络通信。
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文件
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流