Я создаю Quine на C, и мне нужно создать новый файл c а затем скомпилируйте его и выполните.
Я сделал простой фрагмент, чтобы понять, почему он не работает.
Я предполагаю, что execv
запускает команду до того, как fprintf закончит писать, но я положил сон, и он тоже не работал.
(Все мои извинения за этот самый уродливый код, но это не цель)
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
int main()
{
char *cmd[100]= {"sh", "-c", "\"gcc tmp.c && ./a.out\""};
fprintf(fopen("tmp.c", "w"), "#include <stdio.h>\nint main(){puts(\"Hello World\");}");
execv("/bin/sh", cmd);
return (0);
}
Вывод
sh: gcc tmp.c && ./a.out: No such file or directory
Любая идея ?