Por que umask no programa C não funciona como esperado

0

Eu tenho o seguinte código do livro:

#define RWRWRW (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)

int
main()
{
    umask(0);
    if(creat("foo",RWRWRW)<0)
        err_sys("creat error for foo");
    umask(S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
    if(creat("bar",RWRWRW)<0)
        err_sys("create error for bar");
    exit(0);
}

Em terminal , primeiro todos os umask para obter a criação do modo atual:  Eu recebo 0002. Em seguida, execute este programa. Eu recebo o seguinte:

$ ls -l foo bar
-rwxrwxrwx. 1 root root 0 May 15 14:28 bar
-rwxrwxrwx. 1 root root 0 May 15 14:28 foo

Mas deve ser assim:

$ ls -l foo bar
-rw------- 1 sar 0 Dec 7 21:20 bar 
-rw-rw-rw- 1 sar 0 Dec 7 21:20 foo

Então, o que está acontecendo? Por que o umask no meu programa não funciona?

    
por Sut 15.05.2018 / 08:53

0 respostas