-2

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);
4

1 に答える 1