フルパスのファイルをコピーし、execlを使用してCプログラムの名前を変更するには?このディレクティブを使用できますか?
execl("/bin/cat","cat",path_source,">",path_destination,NULL);
ベストアンサー1
公開したコードは、次のシェルコマンドを模倣するように設計されているようです。
cat path_source >path_destination
しかし、この場合引数では>
ありません。代わりに、単一の引数で実行され、標準出力が接続されている
cat
シェルによって解釈されます。 (だからCコードは。)cat
path_source
path_destination
cat path_source '>' path_destination
上記のコマンドを模倣する1つの方法cat
は、シェルコマンド()を含む文字列を設定し、"cat ... >..."
execを使用してそれをパラメータとして渡すことです/bin/sh -c
。しかし、どれほど信頼性が高く安全なのかわからない場合は、信頼性が高く安全にすることは困難です。ファイル名が特定の制約に対して検証されていることを確認してください。
ファイル名のみを変更するには、の標準機能を使用することをお勧めrename
しますstdio.h
。そうでない場合は、質問を明確にしてください。