Как я выполняю неблокирование fopen на именованном канале (mkfifo)?

Ответ:

Иногда запросы от request.get () блокируются сервером, поэтому решение состоит в том, чтобы заставить сервер думать, что запрос поступает из веб-браузера. Пример:

 headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',}
 page = requests.get("https://example.com", headers=headers)
19
задан Jive Dadson 18 November 2017 в 12:30
поделиться

1 ответ

Вы могли open() Ваш канал O_RDONLY | O_NONBLOCK, и если Вы хотите поток C, можно получить его с fdopen(). Однако могла бы быть проблема с select() - AFAIK, канал fd открыта для чтения, которое не имеет никакого устройства записи, всегда готовится к чтению, и read() возвраты 0, таким образом, эти select() стрелял бы неограниченно долго.

А топорный способ преодолеть это состоял бы в том, чтобы открыть канал O_RDWR; то есть, имейте по крайней мере одно устройство записи (Ваша программа C++). Который решил бы Вашу проблему так или иначе.

16
ответ дан 30 November 2019 в 05:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: