Рабочий каталог по умолчанию дочернего процесса - это когда-либо каталог, который имеет процесс Java, как рабочий каталог, из которого обычно начинается его запуск. И по умолчанию gcc записывает выходные файлы в текущий рабочий каталог. Здесь вы найдете example.o
.
Существует два простых способа решить эту проблему. Вы можете дать Gcc-o
вариант и полный путь и имя требуемого выходного файла, или вы можете установить рабочий каталог дочернего процесса, как это:
ProcessBuilder processBuilder =
new ProcessBuilder("/usr/bin/gcc", "-c","example.c"); // source in working dir
processBuilder.directory(new File ("/hipad/UserProject")); // or whatever
Process proc = processBuilder.start();
Смотрите ProcessBuilder javadoc для получения дополнительной информации.
Отличается ли это, когда вы скомпилируете программу c вручную с теми же параметрами? – slayedbylucifer
. Файл .o возможно появляется в текущем рабочем каталоге, что бы это ни было. – hyde
Я вижу, что вы используете машину * nix правильно? Я заметил, что предоставление всего файла для файлов в этом поможет в большинстве ситуаций ..... – user2277872