次のような別のプロセス(wireshark)を開始するC++アプリケーションがあります。
if (fp == NULL){
fp = popen(processpath, "r"); //processpath is the process I want to start
if (!fp){
throw std::invalid_argument("Cannot start process");
}
fprintf(fp, d_msg);//d_msg is the input I want to provide to process
} else if(fp != NULL){
fprintf(fp, d_msg);
}
問題は、C++ アプリケーションを実行すると、wireshark が開始されますが、エラーが発生することです。End of File on pipe magic during open
それを避けるために私は何をすべきですか?
また、mkfifo を使用して名前付きパイプを作成し、実行してみました。私はこのようなものを使用しました:
if (fp == NULL){
system("mkfifo /tmp/mine.pcap");
fp = popen("wireshark -k -i /tmp/mine.pcap", "r");
if (!fp){
dout << "Cannot start wireshark"<<std::endl;
throw std::invalid_argument("Cannot start wireshark");
}
input = fopen("/tmp/mine.pcap", "wb");
fprintf(input , d_msg);
fclose(input);
} else if(fp != NULL){
input = fopen("/tmp/mine.pcap", "wb");
fprintf(input , d_msg);
fclose(input);
}
しかし、それもうまくいきませんでした。これにより、次のエラーが発生します。
The file "/tmp/wireshark_mine.pcap_20130730012654_ndbFzk" is a capture for a network type that Wireshark doesn't support
どんな助けでも大歓迎です。
どうもありがとうございました。