я хочу запустить программу без использования терминала - это возможно? как? - PullRequest
1 голос
/ 10 ноября 2010

У меня есть программа, которая сделает копию файла, но не нуждается в терминале для печати.

Теперь я хочу запустить файл двойным щелчком ./filemove, но он ничего не делает.Через терминал работает нормально.

Я думаю, это потому, что мне нужно включить заголовки, и я не знаю, как включить заголовки в этот файл.

Кто-нибудь может мне помочь?Я хочу знать, как включить заголовочные файлы в исполняемый файл или, если это не причина, чем какая-то причина?

Спасибо.

Я использую Ubuntu Linux OS.Я не брал никаких переменных среды и все еще не могу найти их!

Ответы [ 3 ]

4 голосов
/ 10 ноября 2010

Я собираюсь сделать попытку и предположить, что ваша проблема связана с путями к файлам. В Linux вы можете запускать программы без терминала. Терминал - это просто интерфейс к приложению. То же самое верно для любой среды рабочего стола, которую вы используете.

Я предполагаю, что ваша программа filemove использует относительные пути. Я предполагаю, что когда вы дважды щелкаете свое приложение, DE запускает его из другого каталога, чем тот, в котором он находится. Это довольно нелогично, но возможно. Так что, если ваша программа находится в /home/user/myproject/, и вы дважды щелкаете по ней, возможно, что DE запускает ее вместо /home/user/.

Я бы порекомендовал добавить вывод в вашу программу и распечатать ее в рабочем каталоге. Поскольку вы не запускаете его на CLI, распечатайте его в файл.

РЕДАКТИРОВАТЬ: вы также можете попробовать изменить любой относительный путь к файлу на абсолютный путь и посмотреть, работает ли он. Это по крайней мере скажет вам, если проблема в рабочем каталоге.

0 голосов
/ 10 ноября 2010

Дикая догадка: вы даете аргументы своей программе, когда запускаете ее в терминале?Как и в команде . / Filemove oldname newname ?

В этом случае вам необходимо передать эти аргументы программе другим способом.По крайней мере, в некоторых оконных системах вы можете перетаскивать файлы на значок программы, чтобы указать пути этих файлов в качестве аргументов.

0 голосов
/ 10 ноября 2010

Если вы хотите продолжить отладку, создайте сценарий оболочки, который содержит что-то вроде:

#!/bin/sh
exec strace /path/to/yourprogram "$@" >/tmp/strace.out 2>&1

Сделайте сценарий исполняемым и запустите его вместо вашей программы, ищите подсказки в / tmp/strace.out Убедитесь, что вы установили программу strace (apt-get install strace)

...