如何在linux中创建一个进程

时间:2012-10-11 03:36:02

标签: linux createprocess

我正在尝试在linux中创建一个进程,但是我不断收到错误。在我的c ++代码中,我只想打开firefox.exe。这是我的代码:

//header files
#include <sys/types.h> 
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <iostream>

using namespace std;

//main function used to run program
int main()
{
    //declaration of a process id variable
    pid_t pid;

    //fork a child process is assigned 
    //to the process id
    pid=fork();

    //code to show that the fork failed
    //if the process id is less than 0
    if(pid<0)
    {
        fprintf(stderr, "Fork Failed");// error occurred
        exit(-1); //exit
    }

    //code that runs if the process id equals 0
    //(a successful for was assigned
    else if(pid==0)
    {
        //this statement creates a specified child process
        execlp("usr/bin","firefox",NULL);//child process
    }

    //code that exits only once a child 
    //process has been completed
    else
    {
        wait(NULL);//parent will wait for the child process to complete
        cout << pid << endl;

        printf("Child Complete");
        exit(0);
    }
}

wait()函数有错误。我把它拿出去试了,但没有发生任何事情。

3 个答案:

答案 0 :(得分:2)

你必须写:

execlp("/usr/bin/firefox","firefox",NULL);

你还需要在execlp之后放一个_exit,以防它失败。

答案 1 :(得分:2)

我认为您没有正确调用execlp

它不会将"firefox"追加到"usr/bin"。因为它会搜索PATH环境变量,所以您可以使用execlp("firefox","firefox",NULL)调用它。


旁白:是的,exec系列函数允许您打破argv[0]应该命名可执行文件的名义保证。对不起,就是这样。

答案 2 :(得分:0)

要创建进程,可以使用系统调用,fork调用,execl调用。 要了解如何使用这些调用在linux中创建进程请按照以下链接。 我认为这将有助于您通过示例更多地了解流程创建。 http://www.firmcodes.com/process-in-linux/