我正在尝试使用execl()函数在c中运行我的程序。 目前,应运行程序的代码片段如下所示,info_proc位于info_proc.c文件中,其中main包含printf。
`switch(fork()) {
case -1:
perror("fork");
exit(EXIT_FAILURE);
case 0:
getcwd(dir, 256);
strcat(dir, "/info_proc");
printf("dir %s", dir);
execl(dir, "info_proc", req->data, NULL);
perror("execl");
exit(EXIT_FAILURE);
default:
wait(NULL);
break;
}
`
我的程序返回" execl:错误的地址"执行...我真的没有看到错误来自哪里
答案 0 :(得分:0)
所以,我的问题是req->数据是pid_t。 以下是我解决问题的方法(感谢cdark,usr2564301和Fred Larson !!)
char *dir = malloc(sizeof(char) * 256);
switch(fork()) {
case -1:
perror("fork");
exit(EXIT_FAILURE);
case 0:
getcwd(dir, 256);
strcat(dir, "/info_proc");
printf("dir %s", dir);
char *pid = malloc(10 * sizeof(char));
sprintf(pid, "%d", req->data);
execl(dir, "info_proc", pid, NULL);
perror("execl");
exit(EXIT_FAILURE);
default:
wait(NULL);
break;
}