命令 "who -b"的行为不同

标签 c linux popen fgets

我正在尝试从“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 任何人都可以帮助我为什么它提供两种不同的格式。

最佳答案

您可以使用以下命令:

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

关于命令 "who -b"的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31745704/

相关文章:

谁能帮我解释一下c语言的代码

linux - 为什么我执行的 sbrk 系统调用不起作用?

linux - 如何在 Linux 上安全且事务性地替换文件?

linux - 以文本形式获取文件的二进制内容的 Unix 魔法?

c - 赌注必须小于余额才能继续 C

c - strcmp 在 C 中返回意外值

python - 让子进程保持事件状态并继续向其发出命令? Python

python - subprocess.Popen( ["open", "target.mkv"],shell=True 打开指定文件失败

c - 将 C 中的 Ruby block 与 SWIG 结合使用

python - 终止后获取进程信息