Hello,
Create an application that does the following:
void setFdBlocking(int fd, bool block) {
// Set an fd's blocking flag on or off.
int flags;
if (0 > (flags = fcntl(fd, F_GETFL, 0))) {
throw;
}
if (block) {
flags &= ~O_NONBLOCK;
} else {
flags |= O_NONBLOCK;
}
if (0 > fcntl(fd, F_SETFL, flags)) {
throw;
}
}
// Make Stdout and Stderr be non-blocking.
setFdBlocking(1, false);
setFdBlocking(2, false);
If you execute the application from a shell inside emacs, the shell will exit when the command returns.
This does not happen for a shell outside of emacs.
Thanks.
-William