当前位置: 技术问答>linux和unix
execl函数问题 fork问题
来源: 互联网 发布时间:2017-01-13
本文导语: 两个问题: 1. exec族函数的问题 pid = fork(); if(pid>0) //parent { ... } if(pid == 0) //child { execl("/usr/bin/gcc","-o","t.o","wait.c", NULL); 可以这样用吗?(好像不行) } 如果父进程是一个...
两个问题:
1. exec族函数的问题
2.
可以这样用吗?execl函数支持shell通配符吗??
谢谢
1. exec族函数的问题
pid = fork();
if(pid>0) //parent
{
...
}
if(pid == 0) //child
{
execl("/usr/bin/gcc","-o","t.o","wait.c", NULL); 可以这样用吗?(好像不行)
}
如果父进程是一个守护进程,子进程有标准输入输出吗??
2.
execl("rm", "*~", NULL)
可以这样用吗?execl函数支持shell通配符吗??
谢谢
|
1:你的编译命令是错的:
execl("/usr/bin/gcc","-o","t.o","-c","wait.c", NULL);
2: 不可以这样,通配符是shell解析的,不是rm程序自己能解析的,改成这样:
execl("/bin/bash", "sh","-c","rm *~", NULL)
|
哦,还有,如果你直接:
execl("rm", "/tmp/xxx", NULL) 也是错的,execlp/execvp/execvpe系列才默认会去当前进程的环境变量表里找PATH,execl系列必须使用绝对路径。
正确应该是:
execlp("rm", "*~", NULL)