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 回答