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

标签 c linux bash printf username

我想在我的C程序中有一个提示。如何打印用户名和主机名?在bash脚本中,我使用了$ USER,但我不知道如何将其与prinf()函数连接。请帮助,我没有发现任何地方有帮助。

最佳答案

您可以使用简单的高级:

#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;
}

关于c - Linux C脚本-显示用户,主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48549825/

相关文章:

c++ - 超声波传感器HC-SR04 + Arduino计算?

linux - Linux 上的 gstreamer 音频错误

linux - 如何使用 Linux 命令找到我的 shell 版本?

linux脚本移动目录中的文件和数据

C printf数据格式要求

c - 查找连续设置/未设置位的 block

使用linux终端编译问题

bash - `exit $?` 与 bash 中的 `exit` 有什么不同吗?

bash - 字符串文件路径用作命令参数时不起作用

c - 数组如何在结构中工作?