在后台运行时程序执行停止

时间:2014-10-28 06:22:37

标签: c exec fork background-process

我有一个简单的C程序,它使用fork()和execl()运行一个应用程序(" flute-static")两次(在for循环的帮助下)。应用程序本身是交互式的,即它使用shell从用户获取输入并打印输出。如果我正常运行该程序没有问题发生。但是当我从后台运行C程序时,主程序停止。这是程序。

int main()
{
    int i, pid;
    for (i=0; i<2; i++)
    {
        pid = fork();

        if (pid == -1)
        {
            printf("\nerror, failed to fork()");
        }
        else if (pid > 0)
        {
        }
        else
        {
            /*we are the child*/
            execl("./flute-static", "./flute-static", "-send", "-a192.168.190.1", "/", "6666", "JFlute.1.2.tar.gz", NULL);
            exit(1);
        }
    }

    while(1)
    {
    }
    return 0;
}

运行程序的输出是:

[root@localhost Flute]# ./a.out&
[3] 2643
[root@localhost Flute]#

[3]+  Stopped                 ./a.out

为什么会这样?我该如何解决这个问题?请帮忙。

0 个答案:

没有答案