Linux之socket编程(六)----TCP-->模拟shell命令

shell模拟

TCPserver进行通信,不用来对对于命令的解析,所以我们需要设计一个回调函数,用于命令的分析

function< 返回类型(参数类型列表) >

也就是要一个返回string,传参传入string的回调函数

添加成员函数

和他的初始化

命令行解析

我们这里用popen函数来进行操作

popen = pipe + fork + exec。创建管道,fork 子进程,执行 shell 命令,把命令的输出重定向到管道,返回FILE*文件指针,我们可以用fread / fgets读取命令输出。

参数

  1. command:要在 shell 执行的命令字符串,例如"ls -l"、"ps aux"
  2. type:
  • "r" 读:读取命令的标准输出 stdout,C 程序读命令输出(最常用)
  • "w" 写:往命令的标准输入 stdin 写数据,相当于给这个命令输入内容

popen 底层会调用 /bin/sh -c command,会经过 shell 解析,支持管道|、重定向>、通配符*。

返回值

  • 成功:返回FILE*文件流指针
  • 失败:返回NULL(fork 失败、pipe 失败)
相关推荐
镜子AI8 小时前
镜子AI 技术复盘:三条自动化链路上的“停止条件“设计
运维·人工智能·自动化
tianyuanwo9 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox
一条泥憨鱼9 小时前
【计算机网络】短连接、长连接与连接池:从 TCP 握手到池化复用的完整链路
网络·数据库·网络协议·tcp/ip·计算机网络
HideF9 小时前
Linux sudo
linux
FlightYe9 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
蹊黎10 小时前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
知已难寻11 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
cyf3111 小时前
第 05 篇:IP 协议—— 网络层的“快递单号与物流追踪“
网络协议·tcp/ip·路由表·traceroute·ip协议·ping·ip分片
huainingning11 小时前
Windows syslog日志服务器搭建与模拟器对接
运维·服务器·智能路由器