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 #include <string.h>
00013 int CkSystem (const char *command) {
00014 int pid, status;
00015
00016 pid = fork();
00017 if (pid == -1)
00018 return -1;
00019 if (pid == 0) {
00020 char *argv[4];
00021 argv[0] = strdup("sh");
00022 argv[1] = strdup("-c");
00023 argv[2] = (char *)command;
00024 argv[3] = 0;
00025 execv("/bin/sh", argv);
00026 exit(127);
00027 }
00028 do {
00029 if (waitpid(pid, &status, 0) == -1) {
00030 if (errno != EINTR)
00031 return -1;
00032 }
00033 else
00034 return status;
00035 } while(1);
00036 }