【发布时间】:2019-10-31 04:18:37
【问题描述】:
我正在尝试运行 bash 脚本来生成 OpenSSL 证书。我的 bash 脚本与我的 c 代码位于同一目录中。
相关C代码:
pid_t pid = fork();
if(pid > 0){
char* arr[] = {"./generate_cert.sh", "direct"};
int succ = execv(arr[0], arr);
printf("succ: %d\n", succ);
exit(1);
}else if(pid < 0){
printf("Fork failed\n");
exit(-1);
}
generate_cert.sh,我最终将扩展的测试 bash 脚本是:
#!/bin/bash
echo "$1"
看来我的权限被 ./generate_cert.sh 拒绝了。我需要改为运行 bash generate_cert.sh。如何使用 execv 执行此操作?
【问题讨论】:
-
这不是错误。使用
perror("execv failed")获取实际错误。 -
感谢您提供有关 perror 的提示。我确实得到了拒绝的许可。有没有办法改为运行
bash generate_cert.sh? -
如果我用“bash generate_cert.sh”代替第一个参数,我会得到错误:“没有这样的文件或目录”,因为我现在没有指向脚本位置。