c - 程序 wchich 从 st_size 读取自己的大小
问题描述
使用 stat() 函数和主函数参数,我必须编写一个程序,该程序从 st_size 读取并打印它自己的大小。我已经尝试过的:
#include <sys/types.h>
#include <sys/stat.h>
int main( const char * szFileName )
{
struct stat fileStat;
int err = stat( szFileName, &fileStat );
if (0 != err) return 0;
return fileStat.st_size;
}
但我真的不明白如何编辑它以读取它自己的大小。
感谢您的时间和所有的帮助:)
解决方案
由于您的程序存在一些小错误,因此我努力编写了一个简单的工作版本:
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#define BUF 20
int main(int argc, char **argv)
{
struct stat fileStat;
char buf[BUF];
int err;
err = stat( argv[1], &fileStat ); // No argv sanity checks
if (0 != err)
return EXIT_FAILURE;
memset(buf, 0, BUF);
snprintf(buf, BUF, "%d\n", fileStat.st_size);
write(0, buf, BUF);
}
一些进一步的评论:
main(int argc, char** argv)
是获取参数的方法。argv[1]
包含第一个参数,如果提供argv[0]
的是程序名称。见这里。- 不要从 main 返回大小,因为这是为返回错误代码保留的。此外,
return 0
这意味着在 UNIX/Linux 中的成功。通过使用write
,您还可以通过管道将结果进行进一步处理。
要读取程序自身的大小(按照 OP 的要求),只需编译 ( gcc -o prog stat.c
) 并运行 ( ./prog prog
)。
推荐阅读
- python - 大熊猫中的 drop_first 有什么用?
- java - 从 http get Java 解谜
- wordpress - 在 FB Messenger 客户聊天中发送产品链接 | WooCommerce
- node.js - React.js npm start 什么都不做
- python - Python:数据框列表中的标准偏差
- r - Using dplyr to mutate variables which meet a certain criteria, while keeping the remaining values the same
- oracle - 文件路径无效
- r - 特定方程中的回归
- solidity - 智能合约返回空
- java - Kafka Stream with Java: Send TO multiple topics