命令“who -b”的行为不同

Posted

技术标签:

【中文标题】命令“who -b”的行为不同【英文标题】:Command "who -b" behaves differently 【发布时间】:2015-07-31 12:01:39 【问题描述】:

我正在尝试从“who -b”输出解析系统启动时间。

#define _XOPEN_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <ctype.h>

void GetSystemTurnOnTime()

 FILE *fp;
 char *pTemp = NULL;
 char szBuffer[1024] = 0;
 int iLen;
 struct tm tm;
 char buf[255];

 fp = popen("who -b", "r");
 fgets(szBuffer, sizeof(szBuffer), fp);

 pTemp = szBuffer;
 while(isspace(*pTemp))
    ++pTemp;
 iLen = strlen(pTemp);
 pTemp[iLen - 1] = '\0';
 printf("%s\n", pTemp);

 pclose(fp);



int
main(void)

 GetSystemTurnOnTime();
 exit(EXIT_SUCCESS);

输出: 在正常执行中,它给出: 系统启动 2015-07-31 11:08

如果我与守护程序集成,那么它会给出: 7月31日11:08

如果我用 gdb 执行守护进程,那么它再次给出: 系统启动 2015-07-31 11:08 任何人都可以帮助我为什么它提供两种不同的格式。

【问题讨论】:

我相信输出格式取决于一些LC_* 环境变量。 见unix.stackexchange.com/questions/98793/… 【参考方案1】:

您可以使用以下命令:

who -b | awk '$1=""; $2=""; print $0' | date -f -

【讨论】:

以上是关于命令“who -b”的行为不同的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令 who

15.who命令

为啥两个不同的简单列表变量的行为彼此完全一样? [复制]

Linux实验二总结

带有 django-nose 的 Django:两个相同的设置文件,在运行测试命令时具有不同的行为

从 Powershell ISE 和 Windows 资源管理器运行脚本的不同行为