(在UNIX中执行内置程序(C)

时间:2016-02-20 01:37:00

标签: c linux unix operating-system exec

 #include<stdio.h>
    #include<unistd.h>
    #include<stdlib.h>

    int main(int argc,char *argv[],char *envp[])
    {
        int pid;
        int id;
        pid=fork();
        if(pid<0)
        {
            printf("\n Error ");
            exit(1);
        }
        else if(pid==0)                         //Child process
        {
        execve("a",argv,envp);  //Problem is in here
            printf("\n Pid of child process is %d ",getpid());  //Finds the id of the child process
        exit(0);
        }
        else                                //Parent process
        {
    wait(3);
    printf("\n Pid of parent process is %d ",getpid());
            exit(1);
        }

    }

我正在尝试在UNIX中执行一个名为a的程序但是它不起作用可能是因为我使用了错误的exec命令或程序a在不同的目录中但是我不确定。当我从终端执行它时它给出了我是孩子和父母过程的ID,但没有通知我关于程序a。

1 个答案:

答案 0 :(得分:1)

它对我有用。我不得不改变呼叫等待:

int retStat;
wait(&retStat);

因为等待真的想要返回一个值而程序在没有它的情况下崩溃了。您是否检查过您的程序是否在您的路径中,或者您是否在exec调用中包含了路径?