Я пишу клиент-серверное приложение C ++ с многопоточным сервером, который принимает соединения от нескольких клиентов.
Мне нужно написать скрипт bash, который компилирует и выполняет несколько экземпляров как сервера, так и клиента. Клиент и сервер находятся в разных папках.
Я попробовал этот способ, но он не работает, потому что он запускает только сервер:
#!/bin/sh
cd "/home/myhost/ServerSide"g++ -std=c++11 -pthread server_struct.cpp -o server
./server
cd "/home/myhost/ClientSide"g++ -std=c++11 client.cpp -o client1
./client1
cd "/home/myhost/ClientSide"g++ -std=c++11 client.cpp -o client2
./client2
как правило, я бы отделил процесс сборки от запуска ваших приложений.
Более того, я бы предложил использовать make
для сборки, а не bash-скрипт.
Makefile (остерегайтесь отступов!):
CXXFLAGS=-std=c++11
VPATH=ServerSide ClientSide
all: client server
server: server_struct.o
$(CXX) -o $@ $^ $(LDFLAGS)
client: client.o
$(CXX) -o $@ $^ $(LDFLAGS)
runall: server client
xterm -e ./server &
xterm -e ./client &
xterm -e ./client &
а потом просто беги make runall
Других решений пока нет …