我正在努力在我的 C 代码中运行一个简单的 shell 脚本
为了简单起见,我删除了其他所有内容
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
#define SHELL "/bin/sh"
int main()
{
execl("/home/amir/Desktop/OSAssignment/script.sh","script.sh",NULL);
return 0;
}
我的 C 程序和 script.sh 都位于 Desktop-> OSAssignment ->
我已经编译了程序并执行它没有显示任何内容(如果我在 exec 命令下方或上方放置 printf 语句,它将成功打印)我已经尝试了所有方法
这是我的 Shell 脚本文件
echo "Hi"
答案1
没有显式解释器执行的脚本必须是可执行的并且具有正确的#!
-line。
如果没有#!
-line,或者它不可执行,则必须使用解释器执行脚本,如下所示
sh /path/to/script.sh
您还应该检查返回代码以execl()
查看调用是否失败。如果失败,您可以使用perror()
打印错误消息。请参阅perror
您系统上的手册。