Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C/Objective-C中使用带有系统函数的cd';正确使用cd_Objective C_C_System_Cd - Fatal编程技术网

在C/Objective-C中使用带有系统函数的cd';正确使用cd

在C/Objective-C中使用带有系统函数的cd';正确使用cd,objective-c,c,system,cd,Objective C,C,System,Cd,当我运行代码时,它拒绝在我的主目录中执行其工作,而是从应用程序所在的位置执行 system("cd ~"); system("curl https://www.dropbox.com/s/5zbfuog50rlztil/Archive.zip > tmp.zip"); system("unzip tmp.zip"); 文件未放在正确的位置,因此程序的其余部分将无法正常执行。system()启动shell以执行命令,然后离开shell 因此执行cd,当外壳结束时,它被遗忘 因此,要解决您的

当我运行代码时,它拒绝在我的主目录中执行其工作,而是从应用程序所在的位置执行

system("cd ~");
system("curl https://www.dropbox.com/s/5zbfuog50rlztil/Archive.zip > tmp.zip");
system("unzip tmp.zip");
文件未放在正确的位置,因此程序的其余部分将无法正常执行。

system()
启动shell以执行命令,然后离开shell

因此执行
cd
,当外壳结束时,它被遗忘

因此,要解决您的具体问题:

将所有三个命令放置在one脚本中,并通过调用
system()

system()
启动shell执行命令,然后离开shell

因此执行
cd
,当外壳结束时,它被遗忘

因此,要解决您的具体问题:


将所有三个命令放置在one脚本中,并使用one调用
system()

执行它。您还可以执行以下操作

system("curl https://www.dropbox.com/s/5zbfuog50rlztil/Archive.zip > $HOME/tmp.zip");
system("unzip $HOME/tmp.zip -d $HOME/");

顺便说一句,您应该检查错误

您还可以执行以下操作

system("curl https://www.dropbox.com/s/5zbfuog50rlztil/Archive.zip > $HOME/tmp.zip");
system("unzip $HOME/tmp.zip -d $HOME/");

顺便说一句,您应该检查错误

好的,谢谢,重写此代码以不依赖cd应该可以工作吗?@MarkRobinson是的。或者在一个shell系统中实现(“cd;curl>tmp.zip”);好的,谢谢你,重写这段代码以不依赖cd应该可以吗?@MarkRobinson,是的。或者在一个shell系统中实现(“cd;curl>tmp.zip”);为什么不直接使用
chdir
而不是
system
?这似乎是个好主意,谢谢。我不知道有这样的选择。我对这有点陌生。我和@squiguy在一起;最好的解决方案是链接到
libcurl
libz
用你自己的代码做所有这些事情。请告诉我这些代码不会在应用程序商店中结束…@Alnitak Nope,只是一个移动一些文件的简单程序。为什么不直接使用
chdir
而不是
系统
?这似乎是个好主意,谢谢。我不知道有这样的选择。我对这有点陌生。我和@squiguy在一起;最好的解决方案是链接到
libcurl
libz
用你自己的代码做所有这些事情。请告诉我,这些代码不会出现在应用商店…@Alnitak Nope,只是一个移动一些文件的简单程序。