c - 使用 C 语言的 linux 系统命令

标签 c linux unix

我有一个 C 程序,它必须获取有关 Linux 机器上特定文件的信息。例如:

#include <stdlib.h>
int main(){
     system("/bin/stat /home/kehelc/programs/test.dtl | egrep Birth | awk '{ print $2, $3 }'");
     return 0;
}

输出: 2013-07-01 11:57:52.208220100

我现在想格式化此输出,使其看起来像: 2013 年 7 月 1 日星期一 11:57:52

我可以使用 sed 和 awk 来完成此操作吗?

谢谢

最佳答案

是的,您可以使用popen并读取输出流,然后您可以根据需要对其进行格式化;)

   /* simply invoke a app, pipe output*/
    pipe = popen("ls -l", "r" );
    if (pipe == NULL ) {
        printf("invoking %s failed: %s\n", buf, strerror(errno));
        return 1;
    }

    waitfor(10);

    while(!feof(pipe) ) {
        if( fgets( buf, 128, pipe ) != NULL ) {
            printf("%s\n", buf );
        }
    }

    /* Close pipe */
    rc = pclose(pipe);

或者你可以直接在awk中使用strftime:

awk '{print strftime("%c", ( <timestamp in milliseconds> + 500 ) / 1000 )}'

请参阅 strftime 手册页以供引用 http://linux.die.net/man/3/strftime

关于c - 使用 C 语言的 linux 系统命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17406475/

相关文章:

返回两个值的 C 函数

c - 为什么 glibc 中 x86 的读写屏障不使用 __volatile asm?

c - K&R - 第 1.9 节 : understanding character arrays (and incidentally buffers)

linux - 检查一个字符串是否是回文

linux - 使用 tee 命令将输出重定向到不存在的目录中的文件

java - 在android中仅从年份获取unix时间戳值

linux - Curl 的证书问题

将字符串中的字符转换为整数以进行乘法

java - 我怎样才能使这个 JButton 可见?当我有逐行扫描背景 JWindow() 时?

linux - Oracle Linux Server (ami-3f739c56) 的 AWS AMI 镜像的默认用户名是什么?