0

C システム関数を使用してエイリアスを作成しようとしています。コードは次のとおりです。

if (argc <= 3) {
    printf("Program Usage: ./executable alias > or < or >> or &\n");
}
else {
    if (strcmp(argv[1],"alias") == 0) {
        if (strcmp(argv[2], "redirect") == 0) {
            char y[] = "=\">\"";
            char *xs = strcat(argv[1], " ");
            char *x = strcat( xs, strcat(argv[3], y));
            printf("%s\n",x);
            int status = system(x);
            printf("%d\n", status);
        }
        else {
            printf("You've not entered proper symbol\n");
        }
    }
    else {
        printf("You've not entered the shell property as alias\n");
    }
}

プログラムを実行する一般的な方法は、

./a.out alias redirect custom_alias_name

さらに、システム関数は 0 を返しますが、alias コマンドを使用して確認すると、現在のエイリアスが表示されません。

4

2 に答える 2

1

これは、 を呼び出してsystem()も親環境の状態が変更されないためです。プログラムは、実行時に親プロセスの環境を継承します。この継承された環境のコピーは、子プロセスに対してローカルです。このローカル環境への変更は、この子プロセスが存在すると破棄されます。

于 2012-10-13T13:36:20.770 に答える
-1

返される値はコマンドのステータスで、成功の場合は 0、エラーの場合は -1 です。この場合、system() は 0 を返します!

于 2012-10-13T14:01:56.993 に答える