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;");
注意,所有一个系统调用,命令末尾的终止符,并由 && 链接,因此一个命令必须成功才能继续执行下一个命令
所以我有一个 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;");
注意,所有一个系统调用,命令末尾的终止符,并由 && 链接,因此一个命令必须成功才能继续执行下一个命令