[완료] touch명령어와 유사한 프로그램을 만들고 있습니다.
글쓴이: 고양이를부탁해 / 작성시간: 금, 2008/05/16 - 7:34오후
안녕하세요 ^^
매번 KLDP에서 많은 도움을 받고 있는 초보리눅서입니다.
학교 강의시간에 내준 과제중에 하나인 touch와 유사한 프로그램만들기를 하고 있습니다.
프로그램에 대해 설명을 하자면
실행시 인자로 주는 파일명이 존재할 경우 시간(ls -al하면 나오는 시간인데 정확한 이름을 모르겠습니다)을 바꾸고
존재하지 않을 경우 새로 생성하는 것인데 여기에 덧붙여 소유자,그룹,다른유저접근권한도 인자로 받아들여서 설정해야합니다
일단 파일이 존재하지 않을 경우에 새로 생성하는 건 바로 알겠습니다.
그런데 파일이 존재할 경우 ls -al하면 파일 옆에 나오는 시간!!을 바꾸려면 어떻게 해야 하는지...
이것저것 해보니 파일 내용에 직접적으로 변경을 가하면 바뀌던데...
utime()을 이용해서 이미있는 파일의 시간은 바꿀 수 있고
접근권한도 할 수 있을 거 같은데!!
지금까지 배운 내용은 open, write, read같은 시스템콜입니다.
왠지 이걸로 프로그램을 해결할 수 있는 방법이 있지 않을까 해서요.
요약
파일이 존재할 경우 시간변경
존재하지 않을 경우 빈파일 생성
접근권한,파일명 인자로 받기
현재 배운 시스템콜은 open,write,read뿐
좋은의견 미리 감사합니다 ^^
Forums:
권한은 int argc, char
과제가 아마 소유자 퍼미션만 받는거 같던데 아닌가요?ㅎ
그룹, Other 도 받는건지 확인 좀 해야 할 것 같아요.
시간 갱신은 아마 NULL을 write 해 보세요... (?)
과제 열심히 하세요.
아 정말요???
정말 소유자만 하라구 했던가요....
강의시간에 멀 들었죠 전 ㅠㅠ
아 그리구 NULL을 write하면 파일크기가 변하지 않나요??
빈파일을 열어서 널을 write하니까 파일크기가 1로 늘어나던데..
문자열로 ""도 주고 '\0'도 줘봤거든요..
ara님은 크기가 안늘어나셨나요??
------------
힘들면 즐겁다.
------------
힘들면 즐겁다.
저도 수업시간에
저도 수업시간에 잘못 들은 것일 수 있어요..
확신이 안서네요. ;
전 안늘어나던데요.
write(out,NULL,1);
주소값을 주지 않으면 절대로 비트가 삽입되는 일은 없어요.
아마 "\0" '\0' 을 착각 하셨을 꺼에요.
그럼 수고하세요~
제가 코딩을 잘못하나봅니다.
전 왜 늘어나죠..허허
파일을 생성하면 일단 0의 크기를 가진 파일이 생성이 되구요
NULL을 주어서 파일에 쓰면 크기가 1로 바뀌어요.
그다음부터는 계속 써도 변화가 없구요.. 계속 1
화요일 8,9 강의들으시고&괜찮으시다면
창가쪽 맨앞에 제가 앉아있으니 와서 코치좀 부탁드려요 ^^
감사합니다!
------------
힘들면 즐겁다.
------------
힘들면 즐겁다.
간단하게... system("touc
간단하게...
system("touch test");
---------------------------------
제일 왼쪽이 저입니다 :)
---------------------------------
제일 왼쪽이 저입니다 :)
!@#$%^&*(
system....굿!
system을 인자를 받을 수 있게 발로 개량했습니다.
int main(int argc, char **argv)
{
char *buf;
buf = (char *)malloc(strlen("touch ")+strlen(argv[1]));
sprintf(buf,"touch ");
sprintf(buf+strlen("touch "),argv[1]);
system(buf);
return 0;
}
좋은 저녁되세요~ 이만 퇴근!
머리를 굴려라! 그래야 먹고 산다.
모든 분들 좋은 답변 감사합니다 ^_^/
과제하는데 많은 도움이 됬습니다!!
바쁜 시간 쪼개 읽어주셔서 감사해요 ^^
------------
힘들면 즐겁다.
------------
힘들면 즐겁다.
댓글 달기