トップ «前の日記(2010-12-18(Sat)) 最新 次の日記(2010-12-22(Wed))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2010-12-21(Tue) 朝は霧、昼は晴れて、夕方から雨、だったはず

稚拙ながらtruncate(1)実装してみた

サイズとファイル名を引数にする順番だけは、一応FreeBSDのと同じはず。
gcc -Wall に怒られないように。

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
 
int tra(char *filename, int foo);
int atoi(char *bar);
 
int tra(char *filename, int num) {
  int ret;
  ret = truncate(filename, num);
  return ret;
}
 
int main(int argc, char *argv[]) {
  int num ;
  int ret;
  char *filename;
 
  filename = argv[2];
  num = atoi(argv[1]);
  ret = tra(filename, num);
  return ret;
}
$ rm -rf foo.txt ; touch foo.txt
 
$ ./truncate 300 foo.txt
 
$ ls -alF foo.txt
-rw-r--r-- 1 user group 300 2010-12-21 22:34 foo.txt

実のところ、argv[1]以降がないとセグメント違反になることを はじめとして未完成箇所ありまくりだ。

蛇足ながら、人のコードは見ていない。
全部自分の手と頭から出ている。


リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。

index.htmlは ここから。