У меня есть программа на C ++, драйвер для Linux и скрипт Bash. Программа C ++ будет связываться с FPGA через драйвер. Чтобы запрограммировать FPGA, мне нужно выгрузить драйвер, запрограммировать FPGA и перезагрузить драйвер после этого. И это задачи в скрипте Bash.
По сути, я хочу добиться того, чтобы программа на C ++ получила определенную команду от клиентской программы, запустила сценарий Bash, чтобы убить программу на C ++, выгрузить драйвер, программу FPGA, загрузить драйвер и снова запустить программу C ++. Но когда я использую system
, fork
а также execl
чтобы запустить скрипт в программе на C ++, rmmod не работает с сообщением об ошибке «ресурсы временно недоступны». Похоже, драйвер думает, что программа C ++ все еще использует его.
Но я подумал, когда я использую fork
а также execl
, если я убью программу C ++ из другого процесса, освободит драйвер, нет? Что я должен сделать, чтобы убить программу и выгрузить драйвер?
Задача ещё не решена.