Articles of posix

O snprintf () SEMPRE está terminando em null?

O snprintf é sempre nulo encerrando o buffer de destino? Em outras palavras, isso é suficiente: char dst[10]; snprintf(dst, sizeof (dst), “blah %s”, somestr); ou você tem que fazer assim, se o somestr é longo o suficiente? char dst[10]; somestr[sizeof (dst) – 1] = ‘\0’; snprintf(dst, sizeof (dst) – 1, “blah %s”, somestr); Estou interessado […]

Existe um equivalente ao MAX_PATH do WinAPI em linux / unix?

Se eu quiser alocar uma matriz de caracteres (em C) que seja garantida para ser grande o suficiente para manter qualquer caminho absoluto válido + nome de arquivo, qual o tamanho que precisa ser. No Win32, há o MAX_PATH define. Qual é o equivalente para Unix / linux?

Chamada do sistema recursiva mkdir () no Unix

Depois de ler a página man do mkdir (2) para a chamada do sistema Unix com esse nome, parece que a chamada não cria diretórios intermediários em um caminho, apenas o último diretório no caminho. Existe alguma maneira (ou outra function) para criar todos os diretórios no caminho sem recorrer à análise manual da minha […]

Por que o SIGPIPE existe?

Pelo que entendi, SIGPIPE só pode ocorrer como resultado de um write() , que pode (e retorna) -1 e setar errno para o EPIPE … Então, por que temos a sobrecarga extra de um sinal? Toda vez que trabalho com cachimbos, eu ignoro o SIGPIPE e nunca senti nenhuma dor como resultado, estou perdendo alguma […]

equivalente popen em c + +

É o seu qualquer C popen () equivalente em C ++?

Criar binário vinculado estaticamente que usa getaddrinfo?

Eu incluí o header netdb.h , onde getaddrinfo está incluído, mas o gcc emite este aviso: warning: Using ‘getaddrinfo’ in statically linked applications requires at runtime the shared libraries from the glibc version used for linking gcc -m32 -static -s -O2 -std=c99 -D_POSIX_C_SOURCE=200112L myprogram.c Como eu posso compilar estaticamente qualquer arquivo que está faltando? Soluções […]

Como faço para encontrar o hostname completo da máquina atual em C (hostname e informações de domínio)?

Em um projeto C (POSIX), como obtenho o nome totalmente qualificado para o sistema atual? Por exemplo, posso obter apenas o nome do host da minha máquina fazendo gethostname() de unistd.h. Isso pode me dar machine3 em troca, mas na verdade estou procurando machine3.somedomain.com por exemplo. Como faço para obter essa informação? Eu não quero […]

Como os flags O_SYNC e O_DIRECT são abertos (2) diferentes / iguais?

O uso e os efeitos dos sinalizadores O_SYNC e O_DIRECT é muito confuso e parece variar um pouco entre as plataformas. Na página man do Linux (veja um exemplo aqui ), o O_DIRECT fornece E / S síncrona, minimiza os efeitos do cache e requer que você manipule o alinhamento do tamanho do bloco. O_SYNC […]

Onde a implementação de 7 POSIX do Microsoft Windows está atualmente?

Existe uma implementação POSIX completa disponível no / para o Windows 7 (estou pensando no Windows Services for UNIX)? Está disponível em todas as versões do sistema operacional (parece que não)? Como ele adiciona / melhora ou quebra em implementações anteriores do MS Windows POSIX? Onde posso encontrar mais informações sobre abordagens e implementações específicas […]

Por que o flag linker da biblioteca às vezes precisa ir no final usando o GCC?

Eu estou escrevendo um pequeno programa em C que usa o librt. Estou surpreso que o programa não compile se eu colocar o sinalizador de link no início, em vez de no final: No momento, para compilar o programa que faço: gcc -o prog prog.c -lrt -std=gnu99 Se eu fizesse o seguinte, ele não conseguiria […]