if (put_user(argc, sp++)) return -EFAULT;
#include <unistd.h> #include <stdio.h> int main() { char *args[] = {"a.py", NULL}; extern char **environ; execve(args[0], args, environ); // 如果execve失败,执行到这里 perror("execve"); return 1; }
#!
#
any_file: #!A B C
#!A B C
Linux 的实现:binfmt_script.c
/* Not ours to exec if we don't start with "#!". */ if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!')) return -ENOEXEC; ... file = open_exec(i_name);