我试图使用函数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;但是当我启动第一个时,我收到错误消息。
答案 0 :(得分:0)
您应该编译第二个文件exectest.c
并获取名为exectest
的可执行文件,因为您的第一个程序启动可执行文件exectest
。