2015-09-16 2 views
0

Мне нужно запустить программу, которая требует определенных входов, перечисленных в файле input.txt. Я хочу, чтобы иметь возможность вызвать этот файл, когда я выполняю программу, поэтому я могу изменить файл input.txt, если это необходимо, прежде чем выполнять оставшуюся часть кода.Система вызова Fortran ('input.txt') время выполнения изменить

Я бегу на Mac OS X.

Что у меня есть:

call system('notes input.txt') 

я получаю следующее сообщение:

ш: Примечания: команда не найдена

Есть ли способ вызвать приложение notes, или это моя ошибка или где-то еще?

+0

Что такое примечания? Какова цель этого вызова? –

+0

http://apple.stackexchange.com/questions/4240/concisely-starting-mac-os-apps-from-the-command-line –

+0

Также обратите внимание, что стандартный способ выполнения командной строки предлагается командой execute_command_line: https://gcc.gnu.org/onlinedocs/gfortran/EXECUTE_005fCOMMAND_005fLINE.html – haraldkl

ответ

3

Вы не указали полный путь файловой системы в строке («notes input.txt»), которую функция SYSTEM отправляет в командную оболочку. Это означает, что вы надеетесь, что есть двоичный файл с именем «notes» где-то в $ PATH вашей оболочки, и ваша оболочка говорит вам, что это не так. Приложение Notes не названо «заметками», и оно не живет где-то, на которое указывает $ PATH оболочки. Вот почему вы получаете это сообщение об ошибке. Попробуйте перейти к оболочке полный путь обоих двоичном вы хотите запустить, и файл, который вы хотите редактировать:

CALL SYSTEM("/Applications/Notes.app/Contents/MacOS/Notes /path/to/input.txt")

(NB: этот путь, где приложение Notes живет на моем Mac; YMMV .)

+0

Я сказал заметки, где должен был сказать textedit. Я выполнил формулу и попытался найти полный путь к приложению TextEdit с помощью команды «which», которая ничего не вернула. поэтому я перетащил и отбросил от finder к терминалу приложение textedit, и он дал мне путь к каталогу: /Applications/TextEdit.app моя команда вызова теперь: call system ("/ Applications/TextEdit.app/path/to/input. txt "), когда выполняется мой код, который он возвращает с сообщением sh: /Applications/TextEdit.app: является каталогом. Я не передаю файл в приложение, чтобы открыть его? – SolFSU

+0

'TextEdit.app' - это каталог пакета приложения (который вы не можете выполнить) - вам нужно найти фактический двоичный файл внутри. Попробуйте '/ Applications/TextEdit.app/Contents/MacOS/TextEdit', может быть? –

0

Попробуйте

call system("/Applications/TextEdit.app/Contents/MacOS/TextEdit /path/to/input.text") 

/Applications/TextEdit.app расположение немного вводит в заблуждение, как это на самом деле папка. В Finder, если вы нажмете на него опцию, вы можете выбрать для просмотра содержимого (не уверен в точной формулировке опции, поскольку на данный момент у меня нет моего mac). Альтернативно, cd /Applications/TextEdit.app; ls для просмотра содержимого. Исполняемый файл должен быть сохранен в подкаталоге, как показано выше.

+0

Итак, сначала это правильный системный вызов, потому что он говорит мне, что он не нашел файл, но это потому, что я не поместил его в каталог.Я не могу переместить мой файл из текущего каталога, потому что тогда программа не будет выполняться вообще. Файл .txt вместе с кодом должен быть одним и тем же каталогом. – SolFSU