C/XCode: sh: ./child: 没有那个文件或目录。命令在终端中运行但不是 XCode

C/XCode: sh: ./child: No such file or directory. Command runs in terminal but not XCode

所以我有一个 child.c 文件,我想使用 stdlib.h 的 system() 函数在我的 main.c 文件中编译并 运行 它。

child.c:

#include<stdio.h>
int main(){
printf("I am the child\n");
return 0;
}

main.c:

#include <stdio.h>
#include <stdlib.h>

int main() {
    system("cd ~/Desktop/HW3/HW3");
    system("gcc -o child child.c");
    system("./child");
    return 0;
}

当我在终端中使用以下命令运行 main.c 编译和 运行 main.c 时一切正常

abcs-mbp:HW3 abc$ cd
abcs-mbp:~ abc$ cd ~/Desktop/HW3/HW3
abcs-mbp:HW3 abc$ gcc -o main main.c
abcs-mbp:HW3 abc$ ./main

它 运行 child.c 并打印了以下内容:

I am the child

但是当我尝试 运行 在 XCode 中完全相同的 main.c 时,XCode 给了我以下错误:

clang: error: no such file or directory: 'child.c'
clang: error: no input files
sh: ./child: No such file or directory

有人知道为什么会这样吗?我觉得跟路径有关系,但是怎么才能告诉XCodechild.c的路径然后告诉它去编译child.c?

我也试过了

 system("cd ~/Desktop/HW3/HW3");
 system("gcc -o child child.c");
 system("./child");

system("/Users/vqianxiao/Desktop/HW3/HW3/ gcc -o child child.c");

但似乎没有任何效果...感谢任何帮助!

它不起作用的原因是多种因素的结合

1) each 'system' call is run in a separate shell instance, 
   so the second 'system' call 
   starts from the directory where the main program is running.

2) things do down from there

建议的修复:

system("cd ~/Desktop/HW3/HW3; && gcc -o child child.c; && ./child;");

注意,所有一个系统调用,命令末尾的终止符,并由 && 链接,因此一个命令必须成功才能继续执行下一个命令