バックグラウンド
Raspberry Pi Stackexchangeの問題の解決策をコーディングしようとしています。その人はキオスクを作成していて、ネットワークが切断されてから再接続された場合に、Midori (Raspbian Wheezy のブラウザー) が自分自身をリロードすることを望んでいます。インターネット接続を確認するために、プログラムに Google への接続を試行させることにしました。up
接続の状態に応じて 0 (ダウン) または 1 (アップ) に割り当てられる変数を使用します。
up
新しい再割り当てされた変数をスレッドに送信する際に問題が発生しています。スレッドから「アップは再割り当てされていません」という永続的なストリームを取得しています。
コード
up = -1 #Undefined state
test_net = ("www.google.com", 80)
#Import modules
import subprocess as sub
from time import sleep
import socket
import threading
def reloader(up):
print "A new thread is born." #Debug
while True:
if up == 1:
print "The system is up."
elif up == 0:
print "The system is down."
#sub.call(["midori", "-e", "Reload"])
else:
print "Up has not been reassigned."
sleep(5)
#Check if internet is up
threading.Thread(target = reloader, args = (up,)).start()
while True:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect(test_net)
up = 1
print up
except socket.error:
up = 0
print up
s.close()
sleep(10)