The child thread was created because execlp will not return if successful. The eprintf was placed after the call to execlp to catch any error, but the child continued to return a (closed) fds[0], resulting in a second slideshow being run by the child.
This commit fixes the issue by killing the child. --- sent.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sent.c b/sent.c index fc5e389..88abe90 100644 --- a/sent.c +++ b/sent.c @@ -153,7 +153,7 @@ filter(int fd, const char *cmd) close(fds[0]); close(fds[1]); execlp(cmd, cmd, (char *)0); - eprintf("execlp %s:", cmd); + die("execlp %s:", cmd); } close(fds[1]); return fds[0]; -- 2.6.2
signature.asc
Description: PGP signature