将命令gcc与execlp一起使用
我在使用将命令gcc与execlp一起使用,c,linux,gcc,fork,C,Linux,Gcc,Fork,我在使用gcc和execlp时遇到问题 这是执行的结果 root@ubuntu:~/sys/TP# ./sys shoum.c: fatal error: no input files compilation terminated. done2 我的代码 #包括 #包括 #包括/用于叉子*/ #包括/*用于pid\u t*/ #包括/*等待*/ int main(int argc,字符**argv) { /*生成一个子项以运行该程序*/ pid_t pid=fork(); 如果(pid==0
gcc
和execlp
时遇到问题这是执行的结果
root@ubuntu:~/sys/TP# ./sys
shoum.c: fatal error: no input files
compilation terminated.
done2
我的代码
#包括
#包括
#包括/用于叉子*/
#包括/*用于pid\u t*/
#包括/*等待*/
int main(int argc,字符**argv)
{
/*生成一个子项以运行该程序*/
pid_t pid=fork();
如果(pid==0)
{/*子进程*/
execlp(“gcc”,“shoum.c”,空);
//execlp(“ls”,“-liha”,空);
printf(“不工作”);
退出(127);/*仅当execv失败时*/
}
其他的
{/*pid!=0;父进程*/
waitpid(pid,0,0);/*等待子进程退出*/
printf(“done2\n”);
}
返回0;
}
PS:当我使用诸如
ls
或cat
之类的其他命令时,execlp
可以工作,但它不能与gcc
一起工作 您缺少一个参数,它应该是:
execlp("gcc", "gcc", "shoum.c", (char*)NULL);
第一个参数是要运行的程序,其余参数是程序的
argv[]
数组。您缺少包含正在运行的程序名称的argv[0]。因此,gcc
认为它是使用名称shoum.c
运行的,并且没有文件名参数。您缺少一个参数,它应该是:
execlp("gcc", "gcc", "shoum.c", (char*)NULL);
第一个参数是要运行的程序,其余参数是程序的
argv[]
数组。您缺少包含正在运行的程序名称的argv[0]。因此,gcc
认为它是使用名称shoum.c
运行的,并且没有文件名参数。您缺少一个参数,它应该是:
execlp("gcc", "gcc", "shoum.c", (char*)NULL);
第一个参数是要运行的程序,其余参数是程序的
argv[]
数组。您缺少包含正在运行的程序名称的argv[0]。因此,gcc
认为它是使用名称shoum.c
运行的,并且没有文件名参数。您缺少一个参数,它应该是:
execlp("gcc", "gcc", "shoum.c", (char*)NULL);
第一个参数是要运行的程序,其余参数是程序的
argv[]
数组。您缺少包含正在运行的程序名称的argv[0]。因此,gcc
认为它是使用名称shoum.c
运行的,并且没有文件名参数。而且您真的应该通过-Wall
,并且可能通过-g
和/或-O
到gcc
,我还建议把-o
传给一些二进制代码,你真的应该把-Wall
传给-g
和/或-o
传给-gcc
,我建议把-o
传给一些二进制代码,你真的应该把-Wall
传给-g
和/或-o
传给-gcc
,我还建议将-o
传递给某个二进制文件,你真的应该将-Wall
传递给-g
和/或-o
传递给gcc
,我还建议将-o
传递给某个二进制文件