Thread View: pl.comp.os.linux.programowanie
3 messages
3 total messages
Started by Borneq
Wed, 01 Feb 2017 11:55
Jaka funkcja jak system() ale z podawaniem katalogu roboczego?
Author: Borneq
Date: Wed, 01 Feb 2017 11:55
Date: Wed, 01 Feb 2017 11:55
5 lines
1213 bytes
1213 bytes
system() pozwala na wołanie basha z komendą i czekanie na zakończenie. Jednak jest prosta a ja potrzebuję dać jako parametr katalog w którym ma być to wykonywane. Nie chcę przed wywołaniem używać chdir(). Może funkcje z rodziny execNNN, na przykład execlp? Funkcja ta pozwala szukać programu po PATH, jednak ja chcę uruchomić powłokę.
Re: Jaka funkcja jak system() ale z podawaniem katalogu roboczego?
Author: Adam Wysocki
Date: Wed, 01 Feb 2017 15:59
Date: Wed, 01 Feb 2017 15:59
21 lines
1934 bytes
1934 bytes
Borneq <borneq@antyspam.hidden.pl> wrote: > system() pozwala na wołanie basha z komendą i czekanie na zakończenie. > Jednak jest prosta a ja potrzebuję dać jako parametr katalog w którym ma > być to wykonywane. Nie chcę przed wywołaniem używać chdir(). > Może funkcje z rodziny execNNN, na przykład execlp? Funkcja ta pozwala > szukać programu po PATH, jednak ja chcę uruchomić powłokę. fork W childzie (gdy fork zwrocil 0): chdir exec* W parencie (gdy fork zwrocil >0): waitpid -- http://www.chmurka.net/
Re: Jaka funkcja jak system() ale z podawaniem katalogu roboczego?
Author: Borneq
Date: Wed, 01 Feb 2017 16:16
Date: Wed, 01 Feb 2017 16:16
30 lines
1669 bytes
1669 bytes
W dniu 01.02.2017 o 16:59, Adam Wysocki pisze:
> chdir
> exec*
zrobiłem:
dwa pierwsze parametry do ścieżka do shella a następny "-c"
void execSystem(string command, string workDir)
{
const char *defShell="/bin/bash";
const char* shellPath;
shellPath = getenv ("SHELL");
if (shellPath==NULL)
shellPath = defShell;
__pid_t pid = fork();
int status;
switch(pid)
{
case -1: exit(-1);
case 0:
{
chdir(workDir.c_str());
execlp(shellPath,shellPath,"-c" ,command.c_str(),NULL);
}
break;
default:
{
waitpid(pid,&status,WUNTRACED);
}
}
}
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads