출력의 redirection 결과로 생성된 파일에 크기의 제한이 있는지요?

cabjaewon의 이미지

연결 리스트의 내용을 출력하는 함수가 있습니다.

이 함수가 정상적으로 작동합니다.

즉, 화면에 연결 리스트의 마지막 요소까지 다 출력이 됩니다.

그런데.. 출력을 result 라는 파일로 redirection 을 시켜주니, 생성된 result 파일에 원래 출력 내용의 2/3 정도만 담겨있습니다.

이게... 처음에 전 프로그램에 오류가 있는 거라고 생각을 했는데.. 그건 아닌 거 같구요.. 혹시 redirection 결과 생성되는 파일에 크기의 제한이 있는 건 아닌가 하는 생각에 여쭤봅니다.

시험용으로 printf("%d\n",i)을 10000번 수행하는 루프를 만들어서 돌려봤거든요..(아래 참조)

int i=0;
while(i < 10000)
{
printf("%d\n",i++);
}

역시나 그냥 수행하면 정상적으로 9999까지 출력이 되는데.. result 파일로 출력을 redirection 하니 약 8500 (?) 정도까지만 찍히고 맙니다..

아래는 연결 리스트의 출력을 담당하는 print_list 함수의 소스입니다.

int print_list(addr_list_entry *list_head)
{
addr_list_entry *entry=(addr_list_entry *)malloc(sizeof(addr_list_entry));
entry=list_head -> next;

printf("\n");

while(entry->next != NULL)
{
printf("%s\n",entry->url);
entry=entry->next;
}

free(entry);

return 0;
}

맞게 추측하고 있는 건지 모르겠네요..^^;;

kewlbear의 이미지

물론 무제한일 수는 없겠지만 0부터 9999까지 저장은 가능할텐데요?

Prentice의 이미지

확인은 어떻게 하셨나요? tail -f로 하셨다면 프로그램 종료 전에 fflush(stdout);를 해보시면 어떨까요?

cabjaewon의 이미지

답변 감사합니다..

그냥 vi result 해서 파일을 열어봤습니다.

prompt# ./engine www.hani.co.kr > result

prompt# vi result

그냥 이렇게 확인해 봤습니다.. ^^;;

harisoo의 이미지

root#]script result
root#]./engine www.hani.co.kr
---------------------
프로그램 수행후
root#]exit
root#]vi result

스크립트 명령어는 화면에 출력되는 모든 문자열을 파일로 저장하는 함수입니다. 참고로 수행할때마다 파일이 새로

생성되는게 아니므로 기존 파일을 지우고 새로 수행하세요

cabjaewon의 이미지

감사합니다.^^

리다이렉션은 왜 안 되는지 모르겠지만...

가르켜 주신대로 하니 정상적으로 작동을 하네요..^^

harisoo의 이미지

리다이렉션을 하면 임시버퍼 저장했다가 파일로 저장하기 때문이라고 생각됩니다.

즉 ls > test.txt를 하면 커널에서 ls의 결과를 임시버퍼에 저장한 후에 test.txt 파일을 생성하는 것 같네요.

따라서 리다이렉션으로 저장이 안된건 버퍼의 용량의 한계를 넘어서기 때문이라고 밖에 추측되네요.

cabjaewon의 이미지

^^

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.