Armadilloフォーラム

QProcessでのワイルドカード使用

nic-segawa

2016年12月9日 15時42分

お世話になります。

QtにてQProcessを使用してLinuxのシステム関数の呼び出しを行っております。
その際にワイルドカードを使用するとうまくいきません。

実際に行っている内容は、USBメモリーの接続状態を確認するために以下の記述をしています。

process.start("ls /dev/sda1");

これをワイルドカードを使用し、以下のようにすると失敗します。

process.start("ls /dev/sd*1");

ワイルドカードを使用したシステム関数呼び出しを行う方法はあるのでしょうか?
よろしくお願い致します。

コメント

at_yashi

2016年12月22日 10時04分

ワイルドカードは、シェルの機能なので

process.start("/bin/sh -c \\"ls /dev/sd*1\\"");

とかですかね?

でも自分なら、こう↓書きます。

#include <QTextStream>
#include <QDir>
 
int main(int argc, char *argv[])
{
        QTextStream out(stdout);
        QStringList filter = (QStringList() << "sd*1");
        QDir dir = QDir("/dev/");
 
        dir.setFilter(QDir::System);
        dir.setNameFilters(filter);
 
        QStringList list = dir.entryList();
 
        for (int i=0; i< list.size(); i++)
                out << list.at(i) << endl;
        return 0;
}

nic-segawa

2016年12月12日 9時32分

お世話になります。

ご回答ありがとうございました。
教えて頂いた方法でうまくいきました。
ソースコードも参考にさせて頂きます。