※ ChatGPTを利用し、要約された質問です(原文:ORACLE Pro*Cにおけるsignalについ)
ORACLE Pro*Cにおけるsignalについて
このQ&Aのポイント
ORACLE Pro*Cを使用してDBにアクセスする関数を作成しましたが、別のプロセスから呼び出すと期待しない挙動になります。
Pro*Cは、signalをユーザプロセスに投げるように設計されていますが、具体的な情報が見つかりません。
Pro*Cを利用する場合には、特定のお約束がある可能性があります。調査方法を教えてください。
ORACLE Pro*Cにおけるsignalについ
開発環境
OS:CentOS
DB:Oracle Database 11g
上で,Pro*Cを使用して,DBにアクセスする関数を作成しました(正確には,してもらいました).
上記で作成した関数を,別に作成したプロセスから呼び出しているのですが
プロセスの挙動が,期待しないものになります(ゾンビにはならないが,以降の動作をしない).
OracleのHPを見ると,Pro*Cは,signalをユーザプロセスに投げるように
読めます(SIGCHLD,SIGPIPE??)が,それ以上の情報を見つけられていません.
おそらく,Pro*Cを利用する場合の「お約束」があるのかと思いますが
どの辺を調べればいいかお教えください.
お礼
お礼が遅くなり申し訳ありません。 おっしゃる通り,割り込みがループしておりました。 ありがとうございました。
補足
>> 上記で作成した関数を,別に作成したプロセスから呼び出しているのですが >これが良く変わらないので何ともいえませんが mainを書いたのが私で,Pro*Cを書いたのが別の人という意味でした. #DBを扱うコードを書いたことが無いもので... >DB関数のライブラリの部分をスタブにして普通のCで書いてみたら >ちゃんと動きますか? おっしゃる通り,スタブ化すると正常に動作します. >以降の動作をしない というあたり割り込みが割り込みをよんでませんかね? あ!,そういうことですか. sigaction()で他のシグナルはマスクしていますが, ハンドラ内で,ログを取るためにPro*Cで作成した関数を呼び出しています. 確かにダメっぽいコードになってますね... ハンドラ内で呼び出すのをやめてみます. 明日朝一番で試してみます. ありがとうございます.