Skip to content
Snippets Groups Projects
Commit 3b1889c0 authored by John Hodge's avatar John Hodge
Browse files

Merge branch 'master' of git://mutabah.net/opendispense2

parents 72bf1b1b 5c37cb7f
No related merge requests found
...@@ -44,8 +44,8 @@ volatile int giDoor_ChildStatus; ...@@ -44,8 +44,8 @@ volatile int giDoor_ChildStatus;
void Door_SIGCHLDHandler(int signum) void Door_SIGCHLDHandler(int signum)
{ {
signum = 0; signum = 0;
printf("SIGCHLD\n");
giDoor_ChildStatus ++; giDoor_ChildStatus ++;
printf("SIGCHLD: giDoor_ChildStatus = %i \n", giDoor_ChildStatus);
} }
int Door_InitHandler(void) int Door_InitHandler(void)
...@@ -127,7 +127,6 @@ int Door_DoDispense(int User, int Item) ...@@ -127,7 +127,6 @@ int Door_DoDispense(int User, int Item)
// Child process // Child process
if( childPid == 0 ) if( childPid == 0 )
{ {
// Close write end of stdin, and set it to #0 // Close write end of stdin, and set it to #0
close(stdin_pair[1]); dup2(stdin_pair[0], 0); close(stdin_pair[1]); dup2(stdin_pair[0], 0);
// Close read end of stdout, and set it to #1 // Close read end of stdout, and set it to #1
...@@ -142,11 +141,20 @@ int Door_DoDispense(int User, int Item) ...@@ -142,11 +141,20 @@ int Door_DoDispense(int User, int Item)
close(stdin_pair[0]); // child stdin read close(stdin_pair[0]); // child stdin read
close(stdout_pair[1]); // child stdout write close(stdout_pair[1]); // child stdout write
if( giDoor_ChildStatus || read(stdout_pair[0], buf, 512) < 0) { {
int len;
if( giDoor_ChildStatus || (len = read(stdout_pair[0], buf, 512)) < 0)
{
#if DEBUG
printf("Door_DoDispense: fread fail\n");
#endif
return -1;
}
buf[len] = '\0';
#if DEBUG #if DEBUG
printf("Door_DoDispense: fread fail\n"); printf("Door_DoDispense: buf = %i '%s'\n", len, buf);
#endif #endif
return -1;
} }
// Send password // Send password
...@@ -195,6 +203,8 @@ int Door_DoDispense(int User, int Item) ...@@ -195,6 +203,8 @@ int Door_DoDispense(int User, int Item)
printf("Door_DoDispense: User %i opened door\n", User); printf("Door_DoDispense: User %i opened door\n", User);
#endif #endif
kill(childPid, SIGKILL);
return 0; return 0;
} }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment