这是我的代码:
void function_exists(int foo)
{
char bar[10] = "/bin/";
int baz;
strncat(bar,act_arg[0],sizeof(act_arg[0]));
if(fork() == 0)
{
printf("\n");
baz = execlp(bar,act_arg[0],NULL);
if(baz == -1)
{
foo++;
wait(NULL);
}
else
{
wait(NULL);
exit(0);
}
}
fflush(stdout);
printf("Hello");
}
我正在尝试从execlp返回控件,并且我知道除非有错误,否则它不会返回值,所以我使用了fork。
和
有没有一种方法可以使exec返回或对我执行相同操作的任何其他系统调用。现在我按Enter键,我的程序接管了我,但我想这样做而不必按Enter键。
我没有足够的代表来发布图像,因此这是我的输出的链接:
http://tinypic.com/r/6szw52/5
最佳答案
当您调用execlp时,子进程区域将被execlp覆盖,因此execlp之后可用的代码将不会执行。
将wait放在主循环中可以达到预期的效果。
查看此代码,您将获得更多的想法。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
pid_t child;
child = fork();
if(child == 0) {
printf("at child\n");
execlp("./hello",argv[0],NULL);
printf("after execlp in child\n\n");
sleep(2);
}
else {
wait(NULL);
printf("parrent finish\n");
}
return 0;
}
execlp之后可用的printf将不会执行。
关于c - 如何返回控制表格的exec?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19035796/