• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czy da się uruchomić bashowe polecenie wewnątrz innego (makefile) ?

0 głosów
87 wizyt
pytanie zadane 11 czerwca w Inne języki przez Xarti Obywatel (1,200 p.)
edycja 12 czerwca przez Xarti

Cześć, potrzebuję zrobić daną rzecz: 

uruchomić program serwera -> uruchomić programy klientów (kilku) -> wysłać do serwera dane (najlepiej kilka linijek)

I dla automatyzacji chciałbym zawrzeć to wszystko wewnątrz makefila tak, aby wystarczyło wpisać make test i uruchomił się serwer,  potem klienci i potem od razu wpisały się dane.

Server i Client to programy napisane w C, serwer działa w nieskończonej pętli przyjmując argumenty ze standardowego wejścia. Samo wysyłanie argumentów nie stanowi problemu, bo wystarczy zrobić coś typu

./server <<< 'arg'

Czy da się tam pomiędzy wsadzić wywołanie klienta tak, aby nie działało to jak pipe (klienta w nowym oknie można uruchomić przy użyciu gnome-terminal, ale na końcu muszę jeszcze wysłać argumenty do serwera)

komentarz 11 czerwca przez adrian17 Mędrzec (187,480 p.)
Nie do końca rozumiem części "wewnątrz innego".

Masz na myśli, jak wykonywać inne komendy podczas gdy serwer jest w nieskończonej pętli? Ale nie wiem co to ma do argumentów.
komentarz 12 czerwca przez adrian17 Mędrzec (187,480 p.)

Widziałem że zrobiłeś edita, ale pytanie wciąż stoi:

Masz na myśli, jak wykonywać inne komendy podczas gdy serwer jest w nieskończonej pętli? Ale nie wiem co to ma do argumentów.

Czy może pytanie brzmi, jak dostarczać stdin do już działającego programu... czy coś innego?

komentarz 12 czerwca przez Xarti Obywatel (1,200 p.)
Sory, pisałem pytanie wieczorem i wyszło troszkę nie po polsku.

Chodzi mi o to że w tej chwili program działa następująco:

 - uruchamiam server w terminalu

- uruchamiam klienta w drugim terminalu (potem w trzecim, czwartym, ... klientów może być max 10),

- w terminalu servera wpisuję nazwę pliku, serwer ten plik wysyła do klienta, klient go wypisuje

- jeżeli jest kilku klientów i podam kilka plików (wystarczy nazwy plików wpisać po spacji) serwer ma je powysyłać w miarę równomiernie do wszystkich klientów

--------

i to wszystko działa, tylko jest z tym sporo klikania przy uruchamianiu tego trzydzieści razy  <testowanie w C :( > więc zastanawiałem się, czy da się zrobić w makefilu jakiegoś make'a który wykona te operacje za mnie?

 

Do tej pory wiem, że za pomocą  gnome-terminal mogę w nowym oknie uruchomić klienta (tylko argumenty do serwera muszę i tak podawać ręcznie), mogę też do serwera podać argumenty za pomocą '<<<' tylko wtedy nie będę miał żadnych klientów i nie wyśle polecenia. Szukam sposobu aby to połączyć.

2 odpowiedzi

+1 głos
odpowiedź 12 czerwca przez adrian17 Mędrzec (187,480 p.)
wybrane 12 czerwca przez Xarti
 
Najlepsza

Osobiście bym tego nie robił w makefile'u bezpośrednio, prędzej w osobnym skrypcie bashowym lub Pythonie.

(Nie wiem do końca jaki masz powód ku otwieraniu klientów w osobnych terminalach. To, że serwer jest blokowany czekając na stdin, też brzmi bardzo dziwnie.)

Zamiast w osobnych terminalach, można po prostu uruchamiać kolejne procesy w tle. Potem można serwerowi przez stdin przekazać wejście.

W Pythonie to by wyglądało na przykład tak:

from subprocess import Popen, PIPE

server = Popen(['./server'], stdin=PIPE, text=True)

Popen(['./client'])
Popen(['./client'])
Popen(['./client'])

print('arg', file=server.stdin)

Trochę verbose, ale bardzo elastyczne.

Można też coś podobnego zrobić w bashu, na przykład otwierając serwer w screenie i przekazując tekst do tego screena.

komentarz 12 czerwca przez Xarti Obywatel (1,200 p.)

dzięki, wygląda spoko, co do wątpliwości długa odpowiedź jest taka, że w serwerze jest jeden wątek czekający na wejście, a inne sobie pracują, a klienci są tak otwierani bo od  czasu do czasu coś wyświetlają, kartka odwiedź: bo mi tak kazali w zadaniu wink

0 głosów
odpowiedź 12 czerwca przez PiotrBednarski Gaduła (4,110 p.)
Może przejdź do ścieżki tego pliku i z tamtąd rób komendy?

Podobne pytania

0 głosów
0 odpowiedzi 323 wizyt
pytanie zadane 9 czerwca 2017 w Systemy operacyjne, programy przez nalq Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 81 wizyt
pytanie zadane 29 października 2017 w Inne języki przez Wojtek Iracki Obywatel (1,140 p.)
0 głosów
0 odpowiedzi 63 wizyt
pytanie zadane 26 czerwca 2016 w Inne języki przez Dominik Lange Obywatel (1,700 p.)
Porady nie od parady
Nie wiesz jak poprawnie zredagować pytanie lub pragniesz poznać którąś z funkcji forum? Odwiedź podstronę Pomoc (FAQ) dostępną w menu pod ikoną apteczki.FAQ

64,829 zapytań

111,290 odpowiedzi

234,054 komentarzy

46,702 pasjonatów

Przeglądających: 231
Pasjonatów: 10 Gości: 221

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...