我正在尝试使用 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:错误地址”...我真的不知道错误来自何处
最佳答案
所以,我的问题是 req->data 是 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;
}
关于c - 如何在 c 中 exec() 我的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48101788/