- C, stderr
man fork, man exec , . man 7 signal, man sigaction man wait , .
, man dup2.
:
int pip_stderr[2];
int r;
int pid;
r = pipe(pip_stderr);
assert( r != -1 );
int pid = fork();
assert( pid != -1 );
if (pid == 0) {
r = close(pip_stderr[0]); assert( r != -1 );
r = dup2(pip_stderr[1], 2); assert( r != -1 );
r = close(pip_stderr[1]); assert( r != -1 );
exec( );
assert( !"exec failed!" );
} else {
r = close( pip_stderr[1] ); assert( r != -1 );
r = waitpid(pid,0,0); assert( r == pid );
}
dup2(), stderr ( fd 2) . pipe() fork(). fork , EOF.
, , stdio, . popen() , , stderr stdout ( stdout /dev/null ). .
mktemp() (man 3 mktemp) temp, system() stderr temp , system() read temp .