2016-09-28 6 views
-1

私のPythonコードがC++コードのlibを実行しているときに問題が発生しました。私はそれが私のC + +をやっているのpythonコードかどうかを把握しているように見えることはできません。どんな助けでも大歓迎です。PythonでラップされたときにC++コードが終了しない

はここにここに私のpython #Iはsys.exit()を呼び出してみましたが、それが終了しません、私のCPP

class Led { 
    public: 
    void snowled() 
    { 
     LinuxGPIO gpio23(23); 
     gpio23.SetDirection(true); 
     bool on = true; 
     for (;;) 
     { 
      printf("Switching %s the LED...\n", on ? "on" : "off"); 
      gpio23.SetValue(on); 
      on = !on; 
      sleep(1); 
     } 
    } 
}; 



extern "C" { 
    Led* Led_new(){ return new Led(); } 
    void Led_snowled(Led* led){ led->snowled(); } 
} 

です。

import sys 
import time 
from ctypes import cdll 
lib = cdll.LoadLibrary('./snowled.so') 

class Led(object): 

    def __init__(self): 
     self.obj = lib.Led_new() 

    def snowled(self): 
     lib.Led_snowled(self.obj) 

    def sleeper(self): 
     num = float(1) 
     time.sleep(num) 

    def main(self): 
     light = Led() 
     light.snowled() 

    def stop_running(self): 
     try: 
     sys.exit() 
     except: 
     print(sys.exc_info()[0]) 

if __name__=='__main__': 
    Led().main() 
    Led().stop_running() 
+3

ループが無限であることを考えると、あなたの実際の質問は何か分かりません。 –

+0

コードに文書化コメントを追加してください。あなたのPythonスクリプトはあなたがしたいと言っていることをしていないようです。 –

答えて

0

コールsys.exit()は、実際にSystemExit例外を発生させます。パラメータを指定しないと、終了ステータスはゼロになります。

なぜあなたはそれをキャッチしますか?

関連する問題