提问人:Dacqu91 提问时间:6/8/2022 最后编辑:Dacqu91 更新时间:6/8/2022 访问量:89
exec 运行另一个文件时出现语法错误(语言 C)(编辑)
Syntax error from running another file by exec (language C)(edit)
问:
我正在尝试家庭执行官。
第一个代码是:
int main(int argc, char *argv[]){
// Program changes permission because exec can't execute the file if permission is not accurated
chmod("src2/child.c", S_IRWXU | S_IRWXU);
// Now program creates one child process
pid_t pid = fork();
// If fork failed exit with error
if (pid == -1)
{
perror("error in fork");
exit(1);
}
if (pid == 0)
{
execlp("src2/child.c", "child.c", "Ciao");
// if execlp return something is error
perror("error in exec");
exit(1);
}
// father exit
exit(0);
}
文件 child.c 为:
int child(int argc, char *argv[])
{
// write the term passed
printf("%s\n", argv[1]);
exit(0);
}
makefile 编译了这两个文件。但是在运行时,终端返回'src2/child.c: 6: 语法错误: “(” unexpected' 我不明白为什么
答:
1赞
ikegami
6/8/2022
#1
由于不是二进制文件,也没有 shebang () 行,因此 shell 希望文件包含要执行的 shell 命令。但事实并非如此。src2/child.c
#!
您需要执行(可执行文件),而不是(用于创建该可执行文件的源代码的一部分)。trygame
src2/child.c
您之前已经表明,有问题的 C 文件是包含文件的项目的一部分。此文件指示执行以下操作:make
make
make
gcc -Wall -std=c99 -I./inc -c src/main.c -o src/main.o
gcc -Wall -std=c99 -I./inc -c src/errExit.c -o src/errExit.o
gcc -Wall -std=c99 -I./inc -c src/semaphore.c -o src/semaphore.o
gcc -Wall -std=c99 -I./inc -c src/child.c -o src/child.o
gcc src/main.o src/errExit.o src/semaphore.o src/child.o -o trygame
这将编译在中找到的四个文件,并将它们链接到一个名为 .src/
trygame
您显然重命名为,并且需要相应地调整文件。完成后,运行以生成可执行文件。src
src2
make
make
trygame
要运行该程序,您需要执行此命令,而不是 .trygame
src2/child.c
评论
0赞
Dacqu91
6/8/2022
谢谢,我现在下定决心了。只是:我正确地调整了文件。问题实际上是(正如您所说)我不能在 c 文件上使用 exec。我误解了高管家族。
评论