Linux C脚本 - 显示用户,主机名

时间:2018-01-31 19:17:03

标签: c linux bash printf username

我想在我的C程序中有点提示。如何printf用户名和主机名?在bash脚本中我使用了$ USER,但我不知道如何将它与prinf()函数连接起来。请帮忙,我在任何地方都没有找到任何帮助。

1 个答案:

答案 0 :(得分:1)

  • 您可以使用简单的高级:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main () {
      char* hostname = getenv("HOST");
      char* user = getenv("USER");
    
      if(hostname == NULL) return 1; //hostname reading problem
      if(user == NULL) return 2;  //username reading problem
      printf("I'm user %s on %s.\n", user, host); 
    }
    

但这取决于两个环境变量是否可用(并非总是如此)(例如,当您将代码用作登录shell时,当var是HOSTNAME而不是HOST时,...)。

因此...

  • 我建议忽略变量并询问系统:

    #include <stdio.h>
    #include <unistd.h>
    
    #define MAX_HOSTNAME_LENGTH 255
    
    int main () {
      char hostname[MAX_HOSTNAME_LENGTH + 1];
      char* user = getlogin();
    
      hostname[MAX_HOSTNAME_LENGTH] = 0; //null-terminate in case hostname is too long
      if(gethostname(hostname, MAX_HOSTNAME_LENGTH) != 0) return 1; //hostname reading problem
      if(user==NULL) return 2; //username reading problem
      printf("I'm user %s on %s.\n", user, hostname);
     return 0;
    }