Programowanie > C/C++
[C] Uruchamianie zewnętrznych programów
annonymous:
Witam
pisałem już wiele programów/skryptów na windowsie, lecz w linuxie tylko te najprostsze
W tym temacie chciałbym się dowiedzieć jak uruchomić zewnętrzny program, czy byście mogli mi wrzucić jakiś gotowiec?
a druga sprawa to czy byście mogli dać mi jakiegoś linka/polecić jakąś dobrą stronę z różnicą bibliotek i kursem pisania na linuxie?
oraz trzecia rzecz, czy da się pisać tak programy by działały na obu systemach? czy łatwiej jest już pisać 2 oddzielne programy?
pisząc programy miałem namyśli jakieś łatwe i krótkie kawałki kodu :D
ultr:
W Linuksie skrypty można pisać w wielu językach skryptowych, ale najpopularniejszy jest Bash. W Google jest bardzo dużo na ten temat, wliczając w to kursy i poradniki.
Bash daje ogromne możliwości i nie ma nawet porównania z dosowymi/windowsowymi bat-ami dodanymi do systemu microsoftu chyba jako nieśmieszny żart.
Programy w C da się pisać przenośnie. Nawet te duże i z graficznym GUI, a w szczególności te małe. Musisz tylko używać przenośnych bibliotek, nie używać tych specyficznych dla danego systemu (np. conio.h), czasem dodać jakiś warunek kompilacji.
Uruchomienie zewnętrznego programu:
w Bashu: podajesz jego nazwę jeśli jest w PATH, a jeśli nie to ścieżkę względną lub bezwzględną:
git
./program2
../katalog2/program2
/usr/bin/git
w C/C++: używasz jednej z funkcji exec() lub ewentualnie system():
http://linux.die.net/man/3/exec
http://linux.die.net/man/3/system
Linki:
https://www.google.com/search?q=c+c%2B%2B+linux+kurs
https://www.google.com/search?q=bash+linux+kurs
i oczywiście manual Linuksa: http://linux.die.net/man/
annonymous:
Thx wielkie
Tak oczywiście na co dzień używam basha jednak jeżeli się nie chce pokazywać kodu, lub chce się lepiej pisać programy to już trza wrócić do C
ok mówisz ze się da przenośnie pisać tylko trzeba używać przenośnych bibliotek, to znaczy co?
jak używam bibliotek właśnie conio.h czy windows.h lub innych to co mam zrobić w linuxie?
Byłbym wdzięczny za rozwinięcie tej myśli
wiem ze są odpowiedniki w linuxie lecz tamte biblioteki mają zupełnie inne funkcje, inaczej się nazywają i inaczej działają, wiec jak pisać przenośnie?
Chodzi mi tylko i wyłącznie o C ew. C++
Dzięki za odpowiedzi
ultr:
Skrypt Basha można skompilować do binarki, np. za pomocą shc:
http://www.datsi.fi.upm.es/~frosal/sources/shc.html
Na Linuksie zamiast conio.h można używać ncurses.
Ale jeśli to jest prosty kod, to nie wymaga w ogóle takich wynalazków i wręcz nie powinien ich używać. Programy powinny przyjmować prosty input i generować prosty output. Po to, by można było używać ich w skryptach i automatyzować pracę. Takie wynalazki jak ncurses psują całą tę koncepcję (conio.h nie ma czego psuć, bo w windows skrypty i tak praktycznie nie istnieją).
Po co Ci windows.h w prostych programach to nie wiem. Jeśli go używasz, to z samej nazwy tego pliku nagłówkowego pokazujesz, że nie chcesz pisać przenośnie tylko wiązać się z winapi.
Jeśli coś już koniecznie musi być nieprzenośnie i specyficzne dla platformy, to wydziel implementację do osobnych plików i dodaj warunki kompilacji, aby na każdej platformie używana była odpowiednia implementacja jakiejś funkcji/klasy.
annonymous:
No właśnie się nie zrozumieliśmy, w C to ja pisałem na windowsie, a teraz zamierzam pisać także na linuxie, i ciężko mi się przerzucić bo wiele funkcji których używałem po protu nie ma lub działają inaczej
no dobra może nie koniecznie proste programy chce pisać ale chce je pisać w C
Na chwilę obecną faktycznie chyba wystarczy mi shc, zaraz sprawdzę jak działa w praktyce
przy okazji zapytam czy można zdeskompilować takowy plik binarny skompilowany poleceniem shc i tym samym odzyskać czysty kod?
natomiast wogóle chce pisać przenośne programy i dlatego zadaję właśnie pytania, nie wiem jak się do tego zabrać, bo teraz umiem napisać 2 różne programy używając różnych funkcji z różnych bibliotek
Nawigacja
[#] Następna strona
Idź do wersji pełnej