/ / Esegui uno script di shell dall'applicazione C - c, macos, shell, popen

Esegui uno script di shell dall'applicazione C: c, macos, shell, popen

Sto scrivendo un'applicazione (basata su CLI) in C eVoglio essere in grado di eseguire uno script di shell per eseguire comandi a livello di sistema (è un'app specifica OSX). C'è un modo per fare questo? Ho provato system () ma dice che non è valido dal c99.

if (response == "Y" || response == "y") {
system("Support/script.sh");
system("Support/deps.sh");
printf("Success");
} else {
printf("Good Bye!nn");
}

risposte:

0 per risposta № 1

Controlla la tua directory di lavoro attuale. Sembra te Support la cartella non esiste nel pwd. Mac OS X, un objective-C basato, dovrebbe funzionare con le chiamate di sistema.

Ecco il mio programma di esempio utilizzando popen, se proprio lo richiedi. (Solo un frammento del mio codice .. non completo)

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;