low level fuction 으로 유닉스 명령어 mv를 구현하여라 ㅠㅠ

jtjtkjt의 이미지

흠...

예)./mv file1 file2

흠... ㅠㅠ
알고싶어요~
cp 까지는 구현이 가능한데 mv는 정말이지 머리가
터질것 같아요 ㅠㅠ 아무리 생각해도 답이 안나오네 ㅠㅠ
부탁합니다 ㅠㅠ

morris의 이미지

cp 하시고 rm하시면 되지 않나요?

jtjtkjt의 이미지

ㅠㅠ
잘 모르겟어요 ㅠㅠ

익명 사용자의 이미지

#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>

int main()
{
    char c;
    int in, out;

    in = open(“file.in”, O_RDONLY);

    out = open(“file.out”, O_WRONLY|O_CREAT, S_IRUSR | S_IWUSR);
    while(read(in, &c, 1) ==1 )
          write(out, &c, 1);

      exit(0);
}

요렇게 까지 해서 cp 는 해봤는데

mach337의 이미지

low level function 이 무엇을 이야기 하는지 모르겠습니다만...
man 2 rename
참고가 될런지요....

morris의 이미지

man 2 unlink

해보시면 아실겁니다

참고로 이건 팁인데 해당 명령어가 어떤 시스템 콜을 쓰는지 보면

따라서 구현하기 편하죠

touch tmpfile

strace rm tmpfile

해보세요

익명 사용자의 이미지

rename()을 시도하시고

에러리턴을 봐서 다른 디바이스에 속한경우라면

cp에 썼던 코드를 사용하시고 unlink()를 호출하세요.

man 2 rename 하시면 EXDEV인가 다른 디바이스일 경우 셋팅되는 errno가 있을것입니다.

s4bz의 이미지

Anonymous wrote:
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>

int main()
{
    char c;
    int in, out;

    in = open(“file.in”, O_RDONLY);

    out = open(“file.out”, O_WRONLY|O_CREAT, S_IRUSR | S_IWUSR);
    while(read(in, &c, 1) ==1 )
          write(out, &c, 1);

      exit(0);
}

요렇게 까지 해서 cp 는 해봤는데

이것을 고쳐서..(소스 무단 사용 죄송.m(__)m)
(low level function 이라는게 read랑 write를 뜻하는게 아닐까요??)

#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>

#define MAX_BUF	1024

int main(int argc, char *argv[])
{
	char c;
	char buf[MAX_BUF];
	int n;
	int in, out;

	if (argc != 3) {
		fprintf("%s file_name1 file_name2", argv[0]);
		exit(1);
	}

	in = open(argv[1], O_RDONLY);
	out = open(argv[2], O_WRONLY|O_CREAT, S_IRUSR | S_IWUSR);

	while(n = read(in, buf, MAX_BUF))
		write(out, buf, n);

	close(in);
	close(out);

	remove(argv[2]); // <== 파일 삭제가 이함수인지 생각이 잘안남 -_-;

	exit(0);
}

이게 과연 돌아갈런지.-_-;

에고 낼 셤이 3개인데 공부하러 휘리리릭~

아~~

익명 사용자의 이미지

바로 윗분 가르쳐준거 조금 제 형식으로 변형을 했어요...
ㅋㅋㅋㅋ
다들 감사용 ~~

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.