Мне нужно написать код, где есть процесс (скажем, macsim), который использует вызов system()
для запуска параллельного процесса.то есть system("./cli")
.Второй процесс, который называется «cli», должен принимать аргументы из командной строки и передавать другому процессу (macsim).Я использую сокет unix для этого, так как оба процесса будут работать на одной и той же машине.
Я столкнулся с проблемой, когда однажды macsim вызывает system("./cli")
процесс, он всегда застревает в cli и даже когда cli отправляет что-то по сокету вmacsim, macsim не может получить.Как я могу достичь ipc между этими двумя процессами, используя сокет.
Я проверил системные вызовы select
и poll
, чтобы получить какую-либо активность на fd, но все же я сталкиваюсь с проблемами, так как элемент управления никогда не возвращаетсяmacsim.
Предоставление краткого кода высокого уровня
//macsim
int main()
{
/*Open socket*/
/* Start cli process*/
{
/*Problem lies here. Once cli has started it keeps on running and
sending data to macsim but macsim can't monitor its socket to read data on*/
}
/*Need to check socket for cli process to send data on socket*/
/*I can use select() call but again select() won't be called since it has not returned from cli process yet. Always stuck here*/
}
//cli code
int main()
{
/*Open a unix socekt*/
/*Rcv arguements from command line*/
/*Call sendto to send the rcvd cli to macsim process*/
}