我正在用服务器向客户端发送shell脚本来编写一些程序。客户端获取代码并将其放入文件中,然后再执行它。
添加功能:
void addScript(char *name,char *content){
int fd;
char path[BUFSIZ];
strcpy(path,"scripts/");
strcat(path,name);
strcat(path,".sh");
printf("file : %s\n",path);
fd = open(path,O_WRONLY|O_CREAT|O_TRUNC,S_IRWXU|S_IRGRP);
if(fd == -1){
printf("Error openning file !!");
return;
}
write(fd,content,strlen(content));
write(fd,"\n",1);
close(fd);
}我有文件,但是当我试图运行它时,exec会给出一个错误:
Exec failed : Exec format error我在脚本上运行了文件命令,它给了我:
mount.sh: Non-ISO extended-ASCII text然而,在手写的剧本(用这个剧本)上,我有:
diskUse.sh: POSIX shell script, ASCII text executable当我用我的函数创建文件类型时,我找不到如何强制它,有人有想法吗?谢谢!
编辑更多细节:
不工作文件的示例:
#!/bin/sh
mount有趣的是,如果我从shell (zsh)与./mount.sh一起手动运行它,它会运行得很好,但我有一个警告:
./mount.sh: line 1: #!/bin/sh: No such file or directory但是:
$ ll /bin/sh
lrwxrwxrwx 1 root root 4 30 déc. 23:08 /bin/sh -> bashVar内容是一个char *,通过网络发送。用户输入web接口,然后将其存储在SQLite3数据库中,然后再通过网络发送。
发布于 2015-02-09 12:53:50
有不可打印的字符出现与六编辑,现在工作。
谢谢大家!
https://stackoverflow.com/questions/28408476
复制相似问题