Вы должны указать цель:
make valgrind
поскольку она не является частью all
.
В Makefile вы (очень вероятно) должны указать каталог по ./line
в отличие от line
под целью valgrind.
И, как отметил @casey, используйте $(EXEC)
для согласованности.
Далее вам, вероятно, также следует заменить >&
на >file 2>&1
, так как последний скорее всего будет принят в любой оболочке , (скорее всего sh), которую использует ваш make.
Таким образом, что-то вроде:
valgrind:
valgrind --leak-check=yes ./$(EXEC) >valgrind.out 2>&1
@echo 'valgrind.out has been created'
Поскольку netstat -Aan
не дает полного списка процессов, чтобы отличить поставщика от процесса-переключателя, вам нужно собрать идентификаторы плат, затем PID, а затем проверить аргументы:
for pid in $(netstat -Aan | grep '\.40000.*LISTEN$' | awk '{ print $1 }' | xargs -n1 -i rmsock {} tcpcb | awk '{print $9}')
do
ps -o args= -p "$pid" | grep -q "provider-mode:" && echo this is a provider
ps -o args= -p "$pid" | grep -q "switcher-mode:" && echo this is a switcher
done