|
|
1
4
阿卡茨,答案是不,因为你是怎么回答这个问题的。 您要求“另一种选择是直接在我的代码中重用所有那些古老的、好的工作工具,而不必通过shell调用它们。” 问题是,正确和被接受的重用所有这些古老和良好的工作工具的方法正是您想要避免的——通过shell调用它们(或者至少,通过popen将它们作为子进程激发起来),并且绝对不建议尝试将这些工具包含、复制或复制到您的代码。 用于数据操作的Unix(和Linux)模型是可靠且经过验证的——为什么要避免它? |
|
|
2
3
“古老的”工具是为shell使用而构建的,而不是构建/链接到可执行文件中。不过,还有一些最新的工具可以完成命令行预处理器上显示的许多工作:使用提取器的iostreams(替换
我想不太复杂。 |
|
|
3
2
尝试PONEN()。
参考文献: How to execute a command and get output of command within C++ using POSIX? |
|
|
4
1
你必须通过外壳来完成,但是使用“系统”调用更容易。
|
|
|
5
1
只需编写另一个有用的“古老而好的”工具;)并从stdin读取所有数据并将其返回到stdout。
|
|
|
6
1
最好的方法是:
|
|
|
7
0
busybox也是我的第一个想法,尽管您可能还想考虑嵌入类似于python的脚本引擎,并在python脚本中执行这些操作。 我绝对不会尝试将这种功能从GNU命令行工具中剥离出来,因为它们自早期的Unix时代起就有了显著的增长,并且产生了大量的选项。 如果busybox代码看起来太难适应,那么下一个我要找的地方就是 Minix source code . 在以前的版本下,选择一个版本1或2的小型版本,因为它们是作为教学代码编写的,所以它们往往更清晰和简单。 |
|
|
8
0
如果不想调用外部命令(无论是由exec、popen还是system等),但不想修改这些实用程序的源代码并将它们编译到代码中(相对简单,只需将“main”更改为“main”等),那么我看到的唯一剩下的选项是将实用程序嵌入到代码中,并在运行时或dy时提取它们。通过指向代码中的数据(例如使用软盘或CD映像并编写从RAM地址接收磁盘映像数据的Fuse模块),动态地创建一个文件系统。所有这些看起来都是大量的工作,只是为了让它看起来像一个单独的、整洁的包装实用程序。 就个人而言,如果我真的必须这样做,我会得到所有这些实用程序的源代码,并将它们编译为外部调用。当然,您将不再有易于使用的管道,您要么必须使用临时文件进行预处理,要么使用一些更复杂的涉及共同例程的东西。或者是插座。不管你做什么,都会有大量的工作和混乱! |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
|
user2138149 · 双栈网络服务器无法按预期处理ipv4请求 1 年前 |
|
|
Marco · PyCharm Linux系统文件上os.stat异常 1 年前 |