Pythonの出力をPIPEで取りたいと思いました。
そこで
まず
C
1 2 3#include <stdio.h> 4#include <string.h> 5 6int main() 7{ 8char str[512],*ptr; 9FILE *fp; 10 11 if((fp=popen("python3 test2.py","r"))==NULL){ 12 fprintf(stderr,"error!!!\n"); 13 return -1; 14 } 15 printf("start"); 16 while(1){ 17 fgets(str,512,fp); 18 if(feof(fp)){ 19 break; 20 } 21 ptr=strchr(str,'\n'); 22 if(ptr!=NULL){ 23 *ptr='\0'; 24 } 25 printf("%s\n",str); 26 } 27 pclose(fp); 28 return 0; 29}
のようなコードを書きました
python部分はこれです
python
1print("-----\n") 2while True : 3 print("test")
これは動作します。
ただこれにhttprequestを入れるとブロックされて止まってしまいます。
こんな感じです
python
1import requests 2from requests.auth import HTTPDigestAuth 3import re 4from distutils.util import strtobool 5import datetime 6 7 8 9r = requests.get('http://192.168.1.63/XXXXX', auth=HTTPDigestAuth('AAA', 'BBB')) 10 11 12print("-----\n") 13while True : 14 print("test")
ただこれあまり意味はないけれど
auth=HTTPDigestAuth
を削除すると動作します。
r = requests.get('http://192.168.1.63/XXXXX')
です。
理由が分かる人はいませんか?
あなたの回答
tips
プレビュー