mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Fixed closing all unused file descriptors when opening a pipe
This commit is contained in:
parent
e18b303818
commit
aaf792357d
@ -143,6 +143,7 @@ Artur Skawina <skawina@geocities.com>
|
|||||||
|
|
||||||
Werner Fink <werner@suse.de>
|
Werner Fink <werner@suse.de>
|
||||||
for making I/O more robust by handling EINTR
|
for making I/O more robust by handling EINTR
|
||||||
|
for fixing closing all unused file descriptors when opening a pipe
|
||||||
|
|
||||||
Rolf Hakenes <hakenes@hippomi.de>
|
Rolf Hakenes <hakenes@hippomi.de>
|
||||||
for providing 'libdtv' and adapting the EIT mechanisms to it
|
for providing 'libdtv' and adapting the EIT mechanisms to it
|
||||||
|
2
HISTORY
2
HISTORY
@ -1012,3 +1012,5 @@ Video Disk Recorder Revision History
|
|||||||
- When deleting a recording that is currently still being recorded, the related
|
- When deleting a recording that is currently still being recorded, the related
|
||||||
timer will now automatically be terminated. If this is a repeating timer, it
|
timer will now automatically be terminated. If this is a repeating timer, it
|
||||||
will receive a "First day" setting that skips the timer for this day.
|
will receive a "First day" setting that skips the timer for this day.
|
||||||
|
- Fixed closing all unused file descriptors when opening a pipe (thanks to
|
||||||
|
Werner Fink).
|
||||||
|
7
thread.c
7
thread.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: thread.c 1.16 2001/10/27 13:23:06 kls Exp $
|
* $Id: thread.c 1.17 2002/02/17 14:47:28 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "thread.h"
|
#include "thread.h"
|
||||||
@ -277,8 +277,11 @@ bool cPipe::Open(const char *Command, const char *Mode)
|
|||||||
_exit(-1);
|
_exit(-1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (int i = STDERR_FILENO + 1; i < fd[1 - iopipe]; i++)
|
for (int i = 0; i <= fd[1]; i++) {
|
||||||
|
if (i == STDIN_FILENO || i == STDOUT_FILENO || i == STDERR_FILENO)
|
||||||
|
continue;
|
||||||
close(i); // close all dup'ed filedescriptors
|
close(i); // close all dup'ed filedescriptors
|
||||||
|
}
|
||||||
if (execl("/bin/sh", "sh", "-c", Command, NULL) == -1) {
|
if (execl("/bin/sh", "sh", "-c", Command, NULL) == -1) {
|
||||||
LOG_ERROR_STR(Command);
|
LOG_ERROR_STR(Command);
|
||||||
close(fd[1 - iopipe]);
|
close(fd[1 - iopipe]);
|
||||||
|
Loading…
Reference in New Issue
Block a user