C 将文件写为可执行 ASCII

C write file as executable ASCII

我正在制作一些程序,服务器向客户端发送 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 failed : Exec format error

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

mount.sh: Non-ISO extended-ASCII text

而在手写脚本(使用这个)上我有:

diskUse.sh: POSIX shell script, ASCII text executable

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

编辑更多细节:


非工作文件示例:

#!/bin/sh

mount

"Funny" 如果我用 ./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 数据库中,然后通过网络发送。

有不可打印的字符出现在 hexedit 中,现在有效。

谢谢大家!