- 締切済み
popenについて質問です!!
こんにちは!遺伝的アルゴリズムを用いた回路の最適化について研究をしているものですが…プログラムに問題がありまして質問させていただきました。 たぶん、popenの使い方の問題だと思いますが…下のプログラムを見るとこういう部分があります。↓↓ ----------------------------------------------- if(!(p_file=popen(command,"r"))){ printf(" cannot open a pipe!!"); exit(1); } ----------------------------------------------- プログラムを動かすと何世代かは回りますが、ある世代で急にifのループに入ってしまってプログラムが止まってしまうのですが…なぜでしょうか? これってpopenの使い方が間違ってるんでしょかね? でも、約20世代までは何の問題もなく動きます。で、急にifのループに入ってしまって止まるのです。 どなたかお分かりの方がいらっしゃれば是非教えてください。よろしくお願いいたします。 ------------------------------------------- . . . . char command[100],field[81]; for(rua=0; rua<N; rua++){ for(rub=0; rub<N; rub++){ char *bp; FILE *p_file,*net_fp,*fp_outfile; net_fp=fopen("bpf.net","w"); . . . . fclose (net_fp); sprintf(command,"%s",COMMAND); if(!(p_file=popen(command,"r"))){ printf(" cannot open a pipe!!"); exit(1); } if(!(fp_outfile=fopen("bpf.out","r"))){ printf(" cannot open a output file!!"); exit(1); } . . . . pclose(p_file); . . . .
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- sismoon
- ベストアンサー率22% (22/97)
popenの使用方法は分かりますか? ifの条件に引っかかるということはpopenでコマンドCOMMANDを実行し, ファイルストリームを読み込みで実行しようとしたけれどできなかったということです. printfかなにかで変数COMMANDに何が代入されているか確認してみてください. もしかしたら,サポートされていないコマンドや余計な文字が入っているのかもしれません. 申し訳ないですが,このプログラムではどこでコマンドを代入しているか分からないので判断しかねます.
お礼
回答本当にありがとうございました! ここに書ける文字が限定されてるため…プログラムを全部お見せできないのが残念です…