0

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()関数にエラーがあります。これを省いて試してみましたが、何も起こりませんでした。

4

3 に答える 3

2

あなたは書く必要があります:

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

また、失敗した場合に備えて、execlpの後に_exitを配置する必要があります。

于 2012-10-11T03:47:09.933 に答える
2

execlp正しく電話をかけたとは思いません。

に追加"firefox"することはありません"usr/bin"。環境変数を検索するので、でPATH呼び出すことができますexeclp("firefox","firefox",NULL)


余談ですが:はい​​、exec関数のファミリーを使用すると、実行可能ファイルに名前を付ける必要がある名目上の保証を破ることができますargv[0]。申し訳ありませんが、それはまさにその通りです。

于 2012-10-11T03:50:03.910 に答える
0

プロセスを作成するには、システムコール、fork呼び出し、execl呼び出しを使用できます。これらの呼び出しを使用してLinuxでプロセスを作成する方法を知るには、次のリンクをたどってください。例を挙げてプロセスの作成について理解するのに役立つと思います。 http://www.firmcodes.com/process-in-linux/

于 2015-12-01T16:18:59.800 に答える