Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.os.linux.programowanie > #2087 > unrolled thread
| Started by | Borneq <borneq@antyspam.hidden.pl> |
|---|---|
| First post | 2017-02-01 12:55 +0100 |
| Last post | 2017-02-01 17:16 +0100 |
| Articles | 3 — 2 participants |
Back to article view | Back to pl.comp.os.linux.programowanie
Jaka funkcja jak system() ale z podawaniem katalogu roboczego? Borneq <borneq@antyspam.hidden.pl> - 2017-02-01 12:55 +0100
Re: Jaka funkcja jak system() ale z podawaniem katalogu roboczego? gof@somewhere.invalid (Adam Wysocki) - 2017-02-01 15:59 +0000
Re: Jaka funkcja jak system() ale z podawaniem katalogu roboczego? Borneq <borneq@antyspam.hidden.pl> - 2017-02-01 17:16 +0100
| From | Borneq <borneq@antyspam.hidden.pl> |
|---|---|
| Date | 2017-02-01 12:55 +0100 |
| Subject | Jaka funkcja jak system() ale z podawaniem katalogu roboczego? |
| Message-ID | <o6sibv$f31$2@node1.news.atman.pl> |
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ę.
[toc] | [next] | [standalone]
| From | gof@somewhere.invalid (Adam Wysocki) |
|---|---|
| Date | 2017-02-01 15:59 +0000 |
| Message-ID | <2eTd7vlduI38hNv8%gof@news.chmurka.net> |
| In reply to | #2087 |
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/
[toc] | [prev] | [next] | [standalone]
| From | Borneq <borneq@antyspam.hidden.pl> |
|---|---|
| Date | 2017-02-01 17:16 +0100 |
| Message-ID | <o6t1kc$uk2$1@node1.news.atman.pl> |
| In reply to | #2088 |
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);
}
}
}
[toc] | [prev] | [standalone]
Back to top | Article view | pl.comp.os.linux.programowanie
csiph-web