首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文件写入为可执行文件ASCII

将文件写入为可执行文件ASCII
EN

Stack Overflow用户
提问于 2015-02-09 11:16:33
回答 1查看 1.1K关注 0票数 2

我正在用服务器向客户端发送shell脚本来编写一些程序。客户端获取代码并将其放入文件中,然后再执行它。

添加功能:

代码语言:javascript
复制
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会给出一个错误:

代码语言:javascript
复制
Exec failed : Exec format error

我在脚本上运行了文件命令,它给了我:

代码语言:javascript
复制
mount.sh: Non-ISO extended-ASCII text

然而,在手写的剧本(用这个剧本)上,我有:

代码语言:javascript
复制
diskUse.sh: POSIX shell script, ASCII text executable

当我用我的函数创建文件类型时,我找不到如何强制它,有人有想法吗?谢谢!

编辑更多细节:

不工作文件的示例:

代码语言:javascript
复制
#!/bin/sh

mount

有趣的是,如果我从shell (zsh)与./mount.sh一起手动运行它,它会运行得很好,但我有一个警告:

代码语言:javascript
复制
./mount.sh: line 1: #!/bin/sh: No such file or directory

但是:

代码语言:javascript
复制
$ ll /bin/sh
lrwxrwxrwx 1 root root 4 30 déc.  23:08 /bin/sh -> bash

Var内容是一个char *,通过网络发送。用户输入web接口,然后将其存储在SQLite3数据库中,然后再通过网络发送。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-09 12:53:50

有不可打印的字符出现与六编辑,现在工作。

谢谢大家!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28408476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档