【发布时间】:2020-07-18 07:46:17
【问题描述】:
标题对于我想要做什么是不言自明的。
我目前的尝试:
chdir("/Path/I/want/"); //this is different that the path my program is located at
char * ls_args[] = { "ls" , "ls -l", NULL};
execv(ls_args[0], ls_args);
}
我没有收到任何错误或输出,有什么帮助吗?
【问题讨论】:
-
为什么要更改目录而不是简单地发出
ls /Path/you/want/? -
1) 也可以在给定路径创建文件(例如在
fopen()中指定完整路径。2)为了访问执行命令的输出,请使用popen()(在Linux)或_popen()(在 Windows 上)。我在这个答案stackoverflow.com/a/61010544/11336762 中解释了后者的使用(即使是不同的命令)。 -
我很清楚这一点,感谢您提及,但我被要求使用
exec进行此操作,这不是我的选择,但我非常感谢您提及这一点。 -
在这种情况下它有点复杂,因为
exec函数不提供可以从调用程序中读取的执行程序输出流。这个问题解释了如何做:你必须做一个管道(这就是 popen() 实际做的......):stackoverflow.com/questions/7292642/grabbing-output-from-exec -
或者,您可以将输出重定向到一个文件(类似于
ls path > . out.txt)并通过fopen()、fgets()等处理它...