我打算在C ++程序中包含一个linux命令。我一直在使用system()函数来实现这种效果,就像打印我一直在使用系统(“pwd”)的当前目录一样,系统调用和信号是'ls'我用过的系统(“strace ls”) ),但是现在我想使用strace命令,这样用户就可以输入命令(比如ls,mv,who等)或者他想要在没有硬编码的情况下进行处理的过程。
答案 0 :(得分:3)
对于像cd
或ulimit
(等等)的shell builtins,在system(3)的参数中使用它们是没用的,因为它只会影响syscall {1}}进程由/bin/sh
启动。
您需要在C程序中使用相关的chdir(2),例如致电setrlimit(2)或syscalls(2)
例如,system
可能有一定道理。
系统调用列表位于Advanced Linux Programming。另请阅读popen(3)
顺便说一下,大多数命令都会给出一些输出(至少如果有合适的程序参数询问)。您可能希望将{{3}}与system("cd /tmp; gzip a*");
... 一起使用
答案 1 :(得分:0)
您可以使用system()
系统调用来执行linux命令。您甚至可以通过替换进程地址空间来使用execl
变量来执行linux命令。