Problem z uruchomieniem programu na UBUNTU.
Ostatnio zmodyfikowano 2016-01-10 08:07
Piastlis Temat założony przez niniejszego użytkownika |
Problem z uruchomieniem programu na UBUNTU. » 2016-01-07 02:27:27 Dziś zainstalowałem UBUNTU i na nim code::blocks.Jak na razie zrekompilowałem na nim kilka projektów konsolowych.Wszystko ładnie działa w ramach code::blocks ale programy nie uruchamiają się bezpośrednio.O co tu chodzi?
Ps. Programy się uruchamiają z terminalu.Ale jak to zrobić by same go uruchamiały ?
|
|
mateczek |
» 2016-01-07 08:32:05 możesz sobie zrobić skrót do programu. Skrót w Ubuntu wygląda tak!!! nazwa pliku - mojProgram.desktop treść pliku [Desktop Entry] Version=1.0 Name=MyProgramInTerminal Exec=gnome-terminal -e "/home/tygrys/QtProject/build-untitled18-Desktop-Debug/untitled18" Icon=utilities-terminal Terminal=false Type=Application Categories=Application;
"/home/tygrys/QtProject/build-untitled18-Desktop-Debug/untitled18" - pełna ścieżka do programu który chcesz uruchomić w terminalu |
|
Piastlis Temat założony przez niniejszego użytkownika |
» 2016-01-08 20:18:21 Skrót ma jedną wadę.Nie można można z niego korzystać wewnątrz programu c++ (instrukcja system). Gdyby się nawet to udało to w przypadku zmiany parametrów trzeba by było modyfikować plik desktop. |
|
Kaikso |
» 2016-01-09 00:05:31 Program konsolowy uruchamia się w konsoli na tym to polega. Skoro uruchamia Ci się w terminalu to znaczy że wszystko jest dobrze. |
|
Piastlis Temat założony przez niniejszego użytkownika |
» 2016-01-09 01:53:42 Zależy mi na innym efekcie.Program ma pracować w tle bez efektów na pulpicie a konsola ma się uruchamiać w sytuacjach krytycznych. Przekombinowałem :) Konstrukcja która umożliwia uruchomienie programu w terminalu z wewnątrz programu w c++ to: #include <iostream> #include <stdlib.h> using namespace std; int main( int argc, char * argv[] ) { string sciezka = "gnome-terminal -e \"\/home\/darek\/Dokumenty\/pierwszyprojekt\/bin\/Debug\/pierwszyprojekt "; sciezka = sciezka + argv[ 1 ]; sciezka = sciezka + "\""; system( & sciezka[ 0 ] ); return 0; }
W tym przypadku uruchamiany jest pierwszyprojekt z 1 parametrem programu wywołującego . |
|
Kaikso |
» 2016-01-09 18:30:20 No to nie jest dobre rozwiązanie. Przy uruchamianiu przez polecenie otworzy się druga konsola, a w trybie tekstowym program nie zadziała. Jeśli chcesz uruchomić program w tle musisz stworzyć tak zwanego deamona za pomocą funkcji fork(). A do ewentualnej obsługi błędów wystarczy podmienić standardowy strumień błędów na docelowy plik z logami poprzez zamknięcie deskryptora pliku strumienia funkcją close() i zduplikowanie deskryptora pliku z logami funkcją dup(). To standardowa metoda stosowana w takich sytuacjach na Linuxach. |
|
Piastlis Temat założony przez niniejszego użytkownika |
» 2016-01-10 08:07:57 Możliwe.Jak na razie poświęciłem na C++ na Ubuntu kilka godzin.Przeniosłem na Linuks program umożliwiający jednoczesne ściąganie i oglądanie mediów w necie.Takie połączenie między wtyczką flasgot a vlc i dowolnym programem ściągającym.Normalnie tego programu nie widać na ekranie a terminal wykorzystuje do zmian ustawień i wyświetlania komunikatów.Może to nie jest eleganckie rozwiązanie ale jak na pierwszą pracę nie jest źle bo działa:) |
|
« 1 » |