0
我的Mac OS命令行应用程序发出的Unix调用如:命令行应用程序:Unix的cd命令
system("rm -rf /Users/stu/Developer/file);
完全成功。
那么,为什么下面不改变当前目录?
system("cd /Users/me/whatever");
system("pwd"); //cd has not changed
我的Mac OS命令行应用程序发出的Unix调用如:命令行应用程序:Unix的cd命令
system("rm -rf /Users/stu/Developer/file);
完全成功。
那么,为什么下面不改变当前目录?
system("cd /Users/me/whatever");
system("pwd"); //cd has not changed
由于
system()
通过调用/bin/sh -c
command
执行命令指定的命令,并且该命令之后返回已经完成。
因此,每个命令都独立执行,每个命令都在shell的新实例中执行。
因此,您的第一个电话会产生一个新的sh
(包含您当前的工作目录),更改目录,然后退出。然后第二个电话产生一个新的sh
(再次在您的CWD中)。
更好的解决方案是to not use system
。它有一些固有的缺陷,可以让你面对安全漏洞。而不是执行system()
命令,您应该使用等效的POSIX C函数。 一切,你可以在命令行做的,你可以用C函数做(你觉得如何将这些公用事业工作?)
当然有一些不同之处,但这些是您尝试去做的基本等价物。
谢谢,这将是一个巨大的帮助。有些阅读时间... – HenryRootTwo