- 締切済み
コマンドライン実行とPHPのEXEC実行
C言語プログラムの不具合に悩んでいます。 ◇以下抜粋ソース static int a=0; ・・・ int 関数A(){ /*別ファイルで使用*/ ・・・ a=256; ・・・ } int 関数B(){ int i; ・・・ for(i=0;i<a;i++){ if(for文を抜ける条件){break;} } if(i==a){ printf(エラー!);} ・・・ } ◇以上抜粋ソース 上記のソースより常にi=a=0になってしまうので常にエラーとなる気がするのですがいまいち確信が持てません。 というのも、このソースは他の人から頂いたもので、コマンドラインから実行すると何故か100パーセント正常動作するのです。 しかしブラウザを起動して、PHPファイルにアクセスし、PHPのEXEC関数から実行すると3回に1回ほどの割合で(エラー!)がでます。 3回に2回は正常動作します。 似たような不具合を御経験の方がおられれば何卒御教示ください。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
ご提示のソースからでしたら 関数Aの a=256;が実行される前でしたら aの内容は0でしょう 関数Aが呼ばれる前に関数Bが呼ばれれば i==aが成立します エラーになる原因の特定が必要でしょうね この実行ファイルが コマンドライン引数や何処かのファイルデータなど外部要因によって動いているのであればそれらが PHPで実行した場合とコマンドプロンプトから実行した場合で同じなのかどうかとか 期待している実行順序で実行されているのか といったことを 一つ一つ潰していくしかないと思います ログを吐くようにプログラミングして どこまで期待通りなのか エラーになる際はどこで 意図しない動作なのかを見比べて見ましょう
お礼
御回答ありがとうございます。 実は2端末間の通信や暗号処理、認証処理など複雑なことをおこなっています。 確かに、ひとつひとつ見ていくしかなさそうです。