следующий предлагаемый код:
- чисто компилирует
- выполняет желаемую функциональность
- не пытается создать зомба ie
Примечание: я скомпилировал это на linux с помощью:
gcc -O1 -ggdb -Wall -Wextra -Wconversion -pedantic -c "untitled2.c" -I.
Примечание: я связал его с:
gcc -ggdb -Wall -o "untitled2" "untitled2.o"
Однако fork()
может не работать, в в этом случае возвращается -1, поэтому код должен иметь
case -1:
perror( "fork failed" );
break;
, а теперь предлагаемый код:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
extern char **environ;
void printenv()
{
int i = 0;
while (environ[i] != NULL) {
printf("%s\n", environ[i]);
i++;
}
}
int main( void )
{
pid_t childPid;
switch(childPid = fork())
{
case 0: /* child process */
printenv();
exit(0);
default: /* parent process */
//printenv();
waitpid( childPid, NULL, 0);
exit(0);
}
}