2012-03-26 8 views
3

先生は同じでしょうのexeclp使用してプログラムを行うために私に尋ねた:私が試した
scp * [email protected]:/home/mylogin/myfolder
Cプログラムに「*」シェルを実装


execlp("scp", "scp", "*", "[email protected]:/home/mylogin/myfolder", 0)

を私はファイル名に*変換するシェルだから、うまくいきません。

私はそれを行う方法がありますか、私はexeclp呼び出しにどのようにすべてのファイル名を得ることができたのか分かりません。

私は明確ではないよなら、私に説明するために、それだけでは難しいごめんなさい:(しかし、私は実際には「*」は、それは素晴らしい:)

+0

おかげで、それは私を助けてくれました:) – neciO

+0

それを解決してマークしてください。 – AoeAoe

答えて

2

だろうどのように働くか上の任意のヒントを探していますglob(3)を使用してグロブマッチを実行できます。次に、一致するファイル名とその他の引数をscpに配置する配列を割り当てます。この場合、引数リストではなく配列を持つので、execlp()ではなくexecvp()を使用することは望ましくありません。

しかし、シェルのワイルドカード展開が必要な場合は、system()を使用してシェル内の所定のコマンドを実行します(長所と短所をすべて入れてください)。

0

ワイルドカードの展開にglob(3)関数を使用できます。

1

私の知る限り、C標準ライブラリはディレクトリをスキャンする機能を提供していません。お使いのプラットフォームで利用可能なdirent.hのには、opendir()関数とその関連があります。あなたはそれを研究することができます。

他の回答はglob.h、からグロブ()を言及しているが、それはまた、プラットフォームに依存しています。

関連する問題