/ / Uruchom skrypt powłoki z aplikacji C - c, macos, shell, popen

Uruchom skrypt powłoki z aplikacji C - c, macos, shell, popen

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 № 1

Sprawdź 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;