2013-09-26 34 views
0

这是我的代码:如何返回控件窗体exec?

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.But当我执行的代码中的错误不会返回一个值你好先打印。为什么会发生?

而且

是有办法,我可以使exec返回时或任何其他系统调用,它同样的事情me.Right现在我按回车键和我的程序接管,但我想这样做,而不必按下输入。

我没有足够的代表处,以使这里发表图片是我的输出链接: http://tinypic.com/r/6szw52/5

+1

你可以尝试popen()而不是exec。 – Nika

+0

我看着它,发现一个地方,我可以使用这个,所以谢谢q先生 – user2626335

回答

0

当你调用execlp子进程面积将execlp被覆盖,所以可用代码后execlp将不会执行。

等待在主循环中,你可以达到预期的效果。

检查此代码,你会得到更多的想法。

#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; 
} 

的printf execlp不会执行后可用。