On Sun, Feb 09, 2003 at 08:01:12PM -0500, Aaron Sethman wrote:
> 
> Here is a simple little replacement for system() that does close file
> descriptors.  The main issue with it is though, it ends up picking an
> arbitrary number of fds to close.  I picked closing 0 to 99.
> 
> Aaron
> 
> 
> int s_system(const char *string)
> {
>       pid_t pid;
>       int x;
>       pid = fork()
> 
>       if(pid == -1)
>       {
>               return -1;
>       }
> 
>       if(pid > 0)
>       {
>               int status;
>               wait(&status);
>               return(status);
>         }
> 
>         for(x = 0; x < 100; x++)
>       {
>               close(x);
>       }
>         execlp("/bin/sh", "-c", string);
> 
> }
> 

Hi,

Again, I'm no C hacker, but I think this should be better:

for(x = 3; x < 100; x++)

Since the first 3 fds (stdin, stdout and stderr) should be kept open.

Regards,

Alberto


-- 
Alberto Gonzalez Iniesta       | They that give up essential liberty
agi@(agi.as|debian.org)        | to obtain a little temporary safety
Encrypted mail preferred       | deserve neither liberty nor safety.

Key fingerprint = 9782 04E7 2B75 405C F5E9  0C81 C514 AF8E 4BA4 01C3

Reply via email to