리눅스 umask 질문 있습니다.

익명 사용자의 이미지

안녕하세요 혼자서 리눅스 공부하고 있는 학생입니다.
어떤 홈페이지에 있는 것을 보며 공부하던 중 막히는 부분이 생겨 질문 드립니다.

umask를 통해 이전 접근 권한자와 새 접근 권한자를 구하여 출력해내는 프로그램을 하고 있습니다.
프로그램을 실행하면

$ umask
0022
$ who > file1
$ ./test3 umask 027 sort -o file2 < file1
Old filemode creation mask: 0022
New filemode creation mask: 0000

이런 식으로 뜨는데, file1의 내용을 정렬하여 file2에 넣을 때 마스크 값을 027로 주어
새로운 마스크 값을 0027로 뜨게 하려고 하는데 저렇게 하게되면
오히려 이전 마스크 값이 0027로 바뀌었습니다.
코드가 문제인건지, 제가 명령어를 잘못 입력한건지 모르겠습니다.
홈페이지에는 file2가 실행되고 있어야만 유효하다는데 이해가 가지 않습니다.
file2는 실행파일이 아니라서 어떻게 해야할지 모르겠네요..

#include <stdio.h>
#include <fcntl.h>
 
main(argc,argv)
int argc;
char *argv[];
{
        mode_t newmask, oldmask;
        //int newmask, oldmask, atoi(), umask;
        long strtol();
        int fork();
 
        newmask = strtol(argv[1], (char **) NULL, 8);
        oldmask = umask(newmask);
        printf("Old filemode creation mask: %04o\n", oldmask);
        printf("New filemode creation mask: %04o\n", newmask);
 
        if(fork() == 0) {
                execvp(argv[2], &argv[2]);
                perror(argv[2]);
                exit(127);
        }
}
chanik의 이미지

argv[1]은 "027" 이 아닌 "umask"를 가리키므로
umask() 호출시 027이 아닌 0이 전달되고 있습니다.

실행시 아래와 같이 "umask"를 없애시거나

$ ./test3 027 sort -o file2 < file1

코드에서 argv[1]을 argv[2]로 수정하셔야겠네요.

        newmask = strtol(argv[2], (char **) NULL, 8);

이 경우 fork()이후의 코드에서도 argv[2]를 argv[3]로 바꾸셔야 하고요.
작성자의 이미지

아 0이 전달되고 있던거군요ㅠㅠㅠ 감사합니다
더 공부해야겠네요,, 감사합니다!!!

댓글 달기

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