使用来自C的Linux系统命令

时间:2013-07-01 14:07:28

标签: 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&amp; AWK?

感谢

1 个答案:

答案 0 :(得分:1)

是的,你可以使用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