linux下文件描述符的手动操作

今天看到了一个视频,讲的是如何通过linux原生的命令,获取百度首页的html文件。下面开始进行操作讲解。

一 相关命令

1. exec

exec命令用于调用并执行指令的命令。exec命令通常用在shell脚本程序中,可以调用其他的命令。如果在当前终端中使用命令,则当指定的命令执行完毕后会立即退出终端。

2 $$

$$ is the process ID (PID) of the script itself.
$$代表着进程的自身PID。


exec命令实例

二 实际操作

先介绍一下prod目录:
在GUN/Linux操作系统中,/proc是一个位于内存中的伪文件系统(in-memory pseudo-file system)。该目录下保存的不是真正的文件和目录,而是一些“运行时”信息,如系统内存、磁盘io、设备挂载信息和硬件配置信息等。proc目录是一个控制中心,用户可以通过更改其中某些文件来改变内核的运行状态。proc目录也是内核提供给我们的查询中心,我们可以通过这些文件查看有关系统硬件及当前正在运行进程的信息。在Linux系统中,许多工具的数据来源正是proc目录中的内容。例如,lsmod命令就是cat /proc/modules命令的别名,lspci命令是cat /proc/pci命令的别名。

输入:cd /proc/$$/fd
使用ll命令得到:
总用量 0
lrwxrwxrwx 1 zilch None 0 7月  21 01:06 0 -> /dev/pty1
lrwxrwxrwx 1 zilch None 0 7月  21 01:06 1 -> /dev/pty1
lrwxrwxrwx 1 zilch None 0 7月  21 01:06 2 -> /dev/pty1
lrwxrwxrwx 1 zilch None 0 7月  21 01:06 31 -> /dev/pty1
可以看到当前shell打开的文件描述符 0 1 2 31 其中0 1 2 分别为标准输入,标准输出,标准错误。

之后通过exec命令打开文件描述符:

exec 3<> /dev/tcp/www.baidu.com/80
<>代表可读可写,>代表可写,<代表可读
/dev/tcp是一个特殊的文件,打开这个文件就类似于发出了一个socket调用,建立一个socket连接
所以上述操作相当于在/dev/tcp文件中建立与www.baidu.com的80端口的连接。

之后进行echo操作

echo -e "GET / HTTP/1.0\n" 1>& 3
将这个get请求进行标准输出到文件描述符3,echo -e将\n转义为换行符。
cat 0<& 3
从文件描述符3中得到标准输入。

最后个关闭文件描述符:

先查看一下当前有哪些文件描述符占用:
总用量 0
lrwxrwxrwx 1 zilch None 0 7月  21 01:19 0 -> /dev/pty1
lrwxrwxrwx 1 zilch None 0 7月  21 01:19 1 -> /dev/pty1
lrwxrwxrwx 1 zilch None 0 7月  21 01:19 2 -> /dev/pty1
lrwxrwxrwx 1 zilch None 0 7月  21 01:19 3 -> socket:[3]
lrwxrwxrwx 1 zilch None 0 7月  21 01:19 31 -> /dev/pty1
最后关闭文件描述符:
exec 3<& -
再次查看:已经关闭
总用量 0
lrwxrwxrwx 1 zilch None 0 7月  21 01:20 0 -> /dev/pty1
lrwxrwxrwx 1 zilch None 0 7月  21 01:20 1 -> /dev/pty1
lrwxrwxrwx 1 zilch None 0 7月  21 01:20 2 -> /dev/pty1
lrwxrwxrwx 1 zilch None 0 7月  21 01:20 31 -> /dev/pty1

额外的说明:echo -e

man echo:

DESCRIPTION
       Echo the STRING(s) to standard output.

       -n     do not output the trailing newline

       -e     enable interpretation of backslash escapes(启用反斜杠转义)

       -E     disable interpretation of backslash escapes (default)

       --help display this help and exit

       --version
              output version information and exit

       If -e is in effect, the following sequences are recognized:

       \\     backslash

       \a     alert (BEL)

       \b     backspace

       \c     produce no further output

       \e     escape

       \f     form feed

       \n     new line

       \r     carriage return

       \t     horizontal tab

       \v     vertical tab

       \0NNN  byte with octal value NNN (1 to 3 digits)

       \xHH   byte with hexadecimal value HH (1 to 2 digits)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352