Piszę aplikację (w oparciu o CLI) w C iChcę móc uruchomić skrypt powłoki, aby wykonywać polecenia na poziomie systemu (jest to aplikacja specyficzna dla OSX). Czy jest na to sposób? Próbowałem system (), ale mówi, że nie działa od c99.
if (response == "Y" || response == "y") {
system("Support/script.sh");
system("Support/deps.sh");
printf("Success");
} else {
printf("Good Bye!nn");
}
Odpowiedzi:
0 dla odpowiedzi № 1Sprawdź aktualny katalog roboczy. Wygląda jak te Support
folder nie istnieje w pwd. Mac OS X
, an objective-C
oparty, powinien współpracować z wywołaniami systemowymi.
Oto mój przykładowy program popen
, jeśli w ogóle tego potrzebujesz. (Tylko fragment mojego kodu ... niekompletny)
char unix_script[1000];
memset(unix_script," ",sizeof(unix_script));
snprintf(unix_script,
sizeof(unix_script),
"ksh /usr/mahesh/sessioN.ksh %s %s %s %s %s",
userId,
password,
database,
sbcr_id,
session_id);
char *COMMAND = unix_script,*readLine, *tmp, *commandResult = "";
FILE * fp;
int status;
fp = popen(COMMAND, "w");
if (fp == NULL) {
perror("Command execution failed");
exit(1);
}
//printf("Printing the command output....");
while ((fscanf(fp, "%s", &readLine)) != EOF) {
tmp = (char *) realloc(commandResult, strlen(readLine));
commandResult = tmp;
strcpy(commandResult, readLine);
}
printf("n output =n %sn",commandResult);
status = pclose(fp);
//printf ("Command %s exit status code = %dn", COMMAND, status);
return status;