这只是关于如何处理您提出的解决方案的建议。对于您询问的两个具体操作:
touch
:可以通过打开和关闭要触摸的文件来达到类似的效果
ls
: 有点痛苦,因为你需要dirent.h
在POSIX系统上使用,并且走结果
opendir
readdir
closedir
完成后一定要打电话
如果您想用等效的 using替换system
and调用,则需要小心。这个调用使用起来有点棘手,因为如果孩子在调用之后做任何事情,你就有可能破坏父母的记忆状态。popen
vfork
vfork
exec
为了您的替换system
:
- 创建一个帮助程序来执行参数中提供的字符串
- 帮助程序既可以调用
system
提供的参数,也可以解析命令字符串并调用exec
- 在您的
system
替换函数中,创建一个 arg 向量来调用帮助程序并传入您真正想要执行的程序字符串作为该程序的参数
- 在你打电话后
vfork
,你立即exec
在孩子的助手程序中
- 父母等待孩子完成
在您的popen
替代品中:
stdout
创建一个接受和stdin
文件描述符作为参数
的帮助程序,以及您要执行的命令的字符串
- 助手程序将把传入的描述符复制到
0
或1
(或两者),如参数所示
- 辅助程序可以使用
popen
父子之间的代理数据来执行字符串,也可以exec
在解析命令字符串后调用
- 在您的
popen
替换函数中,用于pipe
创建stdout
或stdin
通信通道(根据第二个popen
函数参数)并创建一个 arg 向量来调用帮助程序,传入适当的文件描述符编号和命令字符串作为参数
- 在你打电话后
vfork
,你立即exec
在孩子的帮助程序
- 您需要
pclose
替换才能获得子进程