C将文件写为可执行ASCII

时间:2015-02-09 11:16:34

标签: c linux executable

我正在使用服务器向客户端发送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

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

mount.sh: Non-ISO extended-ASCII text

在手写的脚本(工作这个)上,我有:

diskUse.sh: POSIX shell script, ASCII text executable

当我使用我的功能创建文件时,我无法找到如何强制文件类型,有人会有想法吗?谢谢!

修改更多细节:


非工作文件的示例:

#!/bin/sh

mount

"滑稽"事情是,如果我用./mount.sh从我的shell(zsh)手动运行它,它会运行良好,但我有警告:

./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 -> bash

Var内容是一个char *,通过网络发送。用户在Web界面中键入它,然后将其存储在SQLite3数据库中,然后通过网络发送。

1 个答案:

答案 0 :(得分:0)

如果使用hexedit出现的不可打印的字符,现在可以使用。

谢谢大家!