将命令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
传递给某个二进制文件