Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 76

Автор ΠœΡΡ‚ΡŒΡŽ НСйл

Π’ зависимости ΠΎΡ‚ настройки систСмы сообщСния Ρ‚ΠΈΠΏΠ°

LOG_EMER
ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»Π°Ρ‚ΡŒΡΡ всСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ систСмы, сообщСния
LOG_ALERT
ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅ администратору, сообщСния
LOG_DEBUG
ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π° сообщСния Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ». Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая примСняСт срСдство рСгистрации сообщСний, просто вызывая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
syslog
, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ рСгистрируСмоС сообщСниС.

Π£ сообщСния, создаваСмого

syslog
, Π΅ΡΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ Ρ‚Π΅Π»ΠΎ сообщСния. Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ создаСтся ΠΈΠ· ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ сообщСниС, ΠΈ Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π’Π΅Π»ΠΎ сообщСния создаСтся ΠΈΠ· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°
message
, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
syslog
, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ дСйствуСт ΠΊΠ°ΠΊ строка
format
Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
printf
. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹
syslog
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² соотвСтствии со спСцификаторами ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π² стилС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
printf
, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² строкС
message
. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ спСцификатор
%m
для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ строки сообщСния ΠΎΠ± ошибкС, ассоциированной с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ
errno
. Π­Ρ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ для рСгистрации сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ….

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 4.13.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 4.13. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
syslog

Π’ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ осущСствляСтся ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ».

#include <syslog.h>

#include <stdio.h>

#include <stdlib.h>

int main() {

Β FILE *f;

Β f = fopen("not_here", "r");

Β if (!f) syslog(LOG_ERR|LOG_USER, "oops - %m\n");

Β exit(0);

}

Когда Π²Ρ‹ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ syslog.с, Ρ‚ΠΎ Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°, Π½ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ„Π°ΠΉΠ»Π° /var/log/messages Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ содСрТится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка:

Jun 9 09:24:50 suse103 syslog: oops β€” No such file or directory

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚. Когда ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° заканчиваСтся Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎ, Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

syslog
для записи ΡΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ Π² систСмный ΠΆΡƒΡ€Π½Π°Π».

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ рСгистрируСмоС сообщСниС Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, какая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π·Π²Π°Π»Π° срСдство рСгистрации; ΠΎΠ½ΠΎ просто констатируСт Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π° функция

syslog
с сообщСниСм. Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ прСобразования
%m
Π±Ρ‹Π» Π·Π°ΠΌΠ΅Π½Π΅Π½ описаниСм ошибки, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰ΠΈΠΌ ΠΎΠ± отсутствии Ρ„Π°ΠΉΠ»Π°. Π­Ρ‚ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π΅Π΅, Ρ‡Π΅ΠΌ простой ΠΎΡ‚Ρ‡Π΅Ρ‚, содСрТащий Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ€ ошибки.

Π’ Ρ„Π°ΠΉΠ»Π΅ syslog.h ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, примСняСмыС для измСнСния повСдСния срСдств вСдСния систСмных ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ².

К Π½ΠΈΠΌ относятся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

<b>#include &lt;syslog.h&gt; void closelog(void);</b>

<b>void openlog(const char *ident, int logopt, int facility);</b>

<b>int setlogmask(int maskpri);</b>

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ способ прСдставлСния Π²Π°ΡˆΠΈΡ… рСгистрируСмых сообщСний, Π²Ρ‹Π·Π²Π°Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

openlog
. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π·Π°Π΄Π°Ρ‚ΡŒ строку
ident
, которая Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΊ вашим рСгистрируСмым сообщСниям. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π΅ для ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, создавшСй сообщСниС. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€
facility
записываСт Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ принятый ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²Π°Ρ…
syslog
. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ устанавливаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
LOG_USER
. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€
logopt
настраиваСт ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
syslog
. Он прСдставляСт собой Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ поразрядной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ
OR
Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ большСго числа ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π». 4.7.

Π’Π°Π±Π»ΠΈΡ†Π° 4.7

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€
logopt
ОписаниС
LOG_PID
Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сообщСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ процСсса, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€, выдСляСмый систСмой ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ процСссу
LOG_CONS
ΠŸΠΎΡΡ‹Π»Π°Π΅Ρ‚ сообщСния Π½Π° консоль, Ссли ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ записаны
LOG_ODELAY
ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ срСдство рСгистрации сообщСний ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
syslog
LOG_NDELAY
ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ срСдство рСгистрации сообщСний Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Π½Π΅ доТидаясь ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ рСгистрируСмого сообщСния

Ѐункция

openlog
Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ дСскриптор Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для записи Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ вСдСния систСмного ΠΆΡƒΡ€Π½Π°Π»Π°. Π’Ρ‹ смоТСтС Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ, Π²Ρ‹Π·Π²Π°Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
closelog
. Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
openlog
ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ
syslog
, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ послСдняя ΠΏΡ€ΠΈ нСобходимости ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ срСдство вСдСния систСмного ΠΆΡƒΡ€Π½Π°Π»Π°.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ рСгистрируСмых Π²Π°ΠΌΠΈ сообщСний с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ установки маски рСгистрации, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

setlogmask
. ВсС Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹
syslog
с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌΠΈ, Π½Π΅ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² маскС рСгистрации, Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π±Ρ€ΠΎΡˆΠ΅Π½Ρ‹, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ смоТСтС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ маску для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ сообщСний Ρ‚ΠΈΠΏΠ°
LOG_DEBUG
Π±Π΅Π· нСобходимости ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚Π΅Π»ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ маску для рСгистрируСмых сообщСний, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

LOG_MASK(priority)
, ΡΠΎΠ·Π΄Π°ΡŽΡ‰Π΅Π΅ маску Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°, ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
LOG_UPTO(priority)
, ΡΠΎΠ·Π΄Π°ΡŽΡ‰Π΅Π΅ маску для всСх ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ² Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 4.14.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 4.14. Маска рСгистрации (
logmask
)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅

logmask
Π² дСйствии.

#include &lt;syslog.h&gt;

#include &lt;stdio.h&gt;

#include &lt;unistd.h&gt;

#include &lt;stdlib.h&gt;