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 失败)
相关推荐
未济2 天前
linux 配置环境变量
linux
傲世仙尊2 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
_艾伦 耶格尔.2 天前
进程间通信
linux
AI职业加油站2 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
Liuqy-052 天前
Linux IO编程——静态库、动态库
linux
此冬歌咏3 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
彧azz3 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
-梅3 天前
linux(8) 软硬链接
linux·运维·服务器
AIgorithmGEEK3 天前
[Linux]线程三部曲(上):一个执行流的诞生——从操作系统一路拆到 pthread_create
linux·线程·pid