Необходимо создать параллельный процесс из процесса, использующего системный вызов («<путь к процессу>»), и иметь ipc между этими процессами, используя сокет unix - PullRequest
0 голосов
/ 08 июля 2019

Мне нужно написать код, где есть процесс (скажем, 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*/
}
...