0

Не могу понять, где относительно исполняемого файла лежит файл с исходным кодом.

Пробовал такие варианты: https://ideone.com/K0Xt0A

__FILE__
"./" __FILE__
"../" __FILE__
Harry
  • 221,325
Qwertiy
  • 123,725

2 Answers2

1

Помогу приблизится к поиску:

#include <iostream>
#include <cstdlib>
using namespace std;

int main() {
    system("ls"); #Исполняй линуксовые команды для поиска файла
    return 0;
}

У меня вывод такой:

Успешно #stdin #stdout 0s 15232KB
prog

prog - это уже готовый исполняемый файл. Думаю надо просто хорошенько по папкам походить.

Allespro
  • 398
  • Нет там ничего. Проверено :) Похоже, что в /home они создают временный каталог, в нем компилируют, убирают все .cpp, .o и запускают. Писать можно в /tmp, туда права позволяют... – Harry Jan 08 '19 at 14:16
1

Итак.

system("ls -laR /home");

вкупе c pwd дает, что наш каталог пуст - только выполнимый prog. Но можно попасть и зацепить в соседнем процесс компиляции - типа

/home/mkgHPB:
total 12
drwxrwx--- 2 root  1000 4096 Jan  8 13:59 .
drwxr-xr-x 5 root  root 4096 Jan  8 13:59 ..
-rw------- 1 20113 1000    0 Jan  8 13:59 ccgHWOGv.o
-rw-rw-r-- 1 root  root  602 Jan  8 13:59 prog.cpp

Т.е. компилируется во временном каталоге в /home, при запуске в нем только prog - какие еще сделать выводы, как не то, что после успешной компиляции исходник убивается? Или все компилируются в /home, и только наш где-то еще? :)

Кстати, прав писать в текущий каталог они не дают, если надо свои файлы написать-почитать - только в /tmp.

Harry
  • 221,325