00001
00002
00003
00004
00005
00006
00007
00008 #include <stdlib.h>
00009 #include <unistd.h>
00010 #include <sys/wait.h>
00011 #include <errno.h>
00012 int CkSystem (const char *command) {
00013 int pid, status;
00014
00015 pid = fork();
00016 if (pid == -1)
00017 return -1;
00018 if (pid == 0) {
00019 char *argv[4];
00020 argv[0] = strdup("sh");
00021 argv[1] = strdup("-c");
00022 argv[2] = (char *)command;
00023 argv[3] = 0;
00024 execv("/bin/sh", argv);
00025 exit(127);
00026 }
00027 do {
00028 if (waitpid(pid, &status, 0) == -1) {
00029 if (errno != EINTR)
00030 return -1;
00031 }
00032 else
00033 return status;
00034 } while(1);
00035 }