在C中使用函数execlp()

时间:2014-10-13 22:42:59

标签: c path exec

我试图使用函数execlp()让子进程运行我写的特定代码,但我不明白路径是如何工作的。

注意:我在终端中使用export PATH=$PATH:.,因此我不需要每次都输入/.ProgName

第一个项目是:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
main() {

    pid_t childpid; 
    int i;
    int nprocess = 3;
    for (i = 0; i < nprocess; ++i) {
     if ((childpid = fork()) < 0) {
         perror("fork:");
         exit(1);
     } 
     if (childpid==0){ 
        printf("I'm the son with ID= %ld\n",(long)getpid());
        char *path = "exectest";
        if ((execl(path,"0",NULL))<0) printf("\n error exec \n");
    } 
      else 
        printf("I'm the father with ID= %ld",(long)getpid());
    }

}

execlp调用的第二个程序是:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <time.h>


void main(){


        printf("\n I'm using exec \n");

}

两个程序都在同一目录中。第二个程序名为&#34; exectest&#34;但是当我启动第一个时,我收到错误消息。

1 个答案:

答案 0 :(得分:0)

您应该编译第二个文件exectest.c并获取名为exectest的可执行文件,因为您的第一个程序启动可执行文件exectest