configure_network: mysystem: use vfork

Origin commit data
------------------
Commit: aff97b7c18
Author: Jacek Jendrzej <overx300@gmail.com>
Date: 2012-06-18 (Mon, 18 Jun 2012)
This commit is contained in:
Jacek Jendrzej
2012-06-18 16:58:51 +02:00
parent 62163fa4e5
commit 573e95478e

View File

@@ -217,24 +217,26 @@ void CNetworkConfig::commitConfig(void)
int mysystem(char * cmd, char * arg1, char * arg2)
{
int pid, i;
switch (pid = fork())
{
case -1: /* can't fork */
perror("fork");
return -1;
int i;
pid_t pid;
int maxfd = getdtablesize();// sysconf(_SC_OPEN_MAX);
switch (pid = vfork())
{
case -1: /* can't fork */
perror("vfork");
return -1;
case 0: /* child process */
for(i = 3; i < 256; i++)
case 0: /* child process */
for(i = 3; i < maxfd; i++)
close(i);
if(execlp(cmd, cmd, arg1, arg2, NULL))
{
perror("exec");
}
exit(0);
default: /* parent returns to calling process */
break;
}
if(execlp(cmd, cmd, arg1, arg2, NULL))
{
perror("exec");
}
exit(0);
default: /* parent returns to calling process */
break;
}
waitpid(pid, 0, 0);
return 0;
}