Как мое приложение C взаимодействует с bluetoothctl?

#stdout #stdin #bluez

#стандартный вывод #bluez

Вопрос:

На языке C я хочу разработать приложение для запуска bluetoothctl, а затем отправить ему команду и получить информацию, как мы запускаем bluetoothctl в консоли.

 int main(void)
{
int fd, err = 0;
char* tty;

wait_pid = -1;
printf("BLEapp program start.......rn");
if (wait_pid == -1) {
    printf("Start to run bluetoothctl......rn");
    if ((pid = fork()) < 0) {
        err = 1;
        printf("Create new progress failed.rn");
    }
    else if (pid == 0) {
        // Child progress, run as default when xid = 0x0 and mastAddr = 0x0
        execl("/root/bluez-5.42/client/bluetoothctl", "bluetoothctl", NULL);
    }

}
else {
    printf("The child procress is still running.....rn");
    err = 1;
}

//tty = ttyname(STDIN_FILENO);
//printf("stdin name is %s.rn", tty);
//fd = open(tty, O_WRONLY);
//if (fd < 0) {
//    printf("Open stdin error..............rn");
//}
while (1) {
    sleep(2);
    fputs("devicesn", stdin);
    //write(fd, "devicesn", 8);
}


return err;
}
  

Я запускаю bluetoothctl как дочерний процесс и хочу отправить ему команду «устройства n» и прочитать перечисленные устройства. Но это не работает.

Пожалуйста, помогите мне устранить эту проблему.

Спасибо.

Комментарии:

1. Взгляните на popen . Вы можете использовать его для получения выходных данных команды.

2. Спасибо. Я попробую это.