execl()和system()在fedora 22中不起作用

时间:2017-08-11 09:20:34

标签: c++ c linux fedora

我使用fork()创建一个简单的应用程序来执行.bundle文件。我在ubuntu 14和centos 5上测试过它工作正常。它将提示显示文件安装的终端。但是当我在fedora 22上测试时它不起作用。没有终端会出现。它只有在我直接从终端运行我的应用程序时才会起作用。如果我双击应用程序它将无法正常工作。我尝试使用execl()和system()都不起作用。任何人都可以帮助我。以下是我的代码

int status;
pid_t child_pid = fork();

if(child_pid < 0)
{
    printf("fork failed\n");
    exit(1);
}

if (child_pid != 0)
{
    printf("parent process\n");
    wait(NULL);
    //waitpid(child_pid,&status,0); 

    if (WIFEXITED(status))
    {
        printf("signal exit\n");

        exit(0);
    }
}
else if (child_pid == 0) 
{
    printf("child process\n");

    int err = 0;

    err = execlp("/tmp/test.bundle", NULL);
    if( err != 0)
        printf("Error execl : %d",err);


    //system("/tmp/test.bundle");


    exit(0);
}

0 个答案:

没有答案