#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. Спасибо. Я попробую это.