safer code, test for return of fcntl

This commit is contained in:
Hisham Muhammad 2014-04-22 20:34:09 -03:00
parent 28d4cad5fe
commit 1afbc19087
1 changed files with 5 additions and 3 deletions

View File

@ -87,9 +87,11 @@ void TraceScreen_run(TraceScreen* this) {
if (child == -1) return; if (child == -1) return;
if (child == 0) { if (child == 0) {
dup2(fdpair[1], STDERR_FILENO); dup2(fdpair[1], STDERR_FILENO);
fcntl(fdpair[1], F_SETFL, O_NONBLOCK); int ok = fcntl(fdpair[1], F_SETFL, O_NONBLOCK);
if (ok != -1) {
sprintf(buffer, "%d", this->process->pid); sprintf(buffer, "%d", this->process->pid);
execlp("strace", "strace", "-p", buffer, NULL); execlp("strace", "strace", "-p", buffer, NULL);
}
const char* message = "Could not execute 'strace'. Please make sure it is available in your $PATH."; const char* message = "Could not execute 'strace'. Please make sure it is available in your $PATH.";
write(fdpair[1], message, strlen(message)); write(fdpair[1], message, strlen(message));
exit(1); exit(1);