Unix で 2 つのファイルをソフトリンクする C プログラムを作成しようとしています。Unix では、このコマンドは次のようになります。
ln -s oldfile newlink
char *
そこで、次のように引数の配列 を作成するコードを書きました。
char *args[4];
args[0] = "ln";
args[1] = "-s";
args[2] = argv[2]; //argv[2] is the name of the old file
args[3] = argv[3]; //argv[3] is the name of the new soft link file
execvp(args[0], args);
ただし、Linux プロセッサは -s フラグを読み取りません。-s フラグを処理するようにこれを書き直すにはどうすればよいですか? 私もそれをやろうとしexeclp
ました:
execlp(args[0], args[0], args[1], args[2], args[3], NULL);
しかし、それもうまくいきません。これらの行で何が間違っていますか?
編集: symlink() コマンドも試しましたが、間違っていてコードに欠陥がない限り、私のバージョンの Linux ではサポートされていないと思います:
char *args[4];
args[0] = "symlink";
args[1] = argv[2];
args[2] = argv[3];
args[3] = NULL;
execvp(args[0], args);