2017-12-08 24 views
1

다음 코드를 무한히 실행하려고합니다. 두 장치가 연결되어 있으면 두 번째 스캔 섹션에서 무한 루프가 멈 춥니 다 (두 번째 스캔 섹션은 두 번째로 무한 루프가 시작되고 스캔 명령이 실행됨을 의미합니다). 이 문제가 나타나는 이유는 무엇입니까? 또한루아의 io.popen 함수의 무한 루프

while true do 
print("Hi") 
s = io.popen("iw wlan0 scan") 
s:close() 
print("Done") 

dis = io.popen("iw wlan0 disconnect") 
dis:close() 

c = io.popen("iw wlan0 connect Name") 
c:close() 
print("Goes to Scan") 
end 

, I 손으로 커맨드 라인 명령을 입력 한 경우 (스캔 -> 단절 -> 연결 -> 검사) 다음 스캔 인쇄 결과가 제 2 주사에 자동으로 5~6 시간에서 반복한다. (스캔 명령을 실행하면 인쇄 결과는 SYNC - 스캔 종료, 20MHz 채널 32로 복원, 총 BSS [02] bImprovedScan ............. bImprovedScan, SCAN_PENDING에 대한 재개 ... ............이 인쇄 된 텍스트는 5 번에서 6 번까지 반복됩니다.) 이 상황이이 문제와 관련이 있습니까?

+0

"제 2 주사 섹션은"무엇인가? 출력물은 무엇입니까? 멈춘 상태로 무엇을 의미합니까? 오류 또는 무엇 때문에 중단되거나 중단됩니까? – Piglet

+0

스캔 명령이 실행될 때 인쇄되는 출력물입니다. SYNC - SCAN 끝, 20MHz 채널 32, 전체 BSS 복원 [02]. – darren

+0

정지는 동결을 의미합니다. 제 2 스캐닝 섹션은 무한 루프가 두 번째로 시작하고 스캔 명령이 실행됨을 의미한다. – darren

답변

3

iw 명령은 무엇을하는지 모르지만 파이프를 읽지 않고 파이프를 사용하고 열면 즉시 닫아 프로그램이 실행되지 않을 가능성이 있습니다.

나는 io.popen 대신 os.execute를 사용하는 것이 좋습니다 :

while true do 
    print("Hi") 
    os.execute("iw wlan0 scan; iw wlan0 disconnect; iw wlan0 connect Name") 
    print("Goes to Scan") 
end 
+0

감사합니다. Ctrl + C로만 인터럽트를 처음 사용할 때만 작동합니다. 이 문제에 대해 저에게 가르쳐 주시겠습니까? – darren

+0

완벽하게 작동합니다! 감사! – darren

+0

's : close()'는 실제로 무엇을합니까? 실행중인 프로세스를 종료합니까? –