LINUX.ORG.RU

Вызов программы на Си


0

1

Привет всем.

Необходимо сделать простейшую программу, что бы при вызове через командную строку с двумя аргументами, из этой программы запускалась внешняя программа с этими аргументами, и получила ответ!

Делаю следующее, но как получить ответ так и не врубился.. Заранее спасибо!

int main(int argc,char **argv,char **envp) { printf(«Запуск CHILD с arg1, arg2 ...\n»); execvpe(«CHILD.EXE»,argv,envp); perror(«Ошибка EXEC»); exit(1); }

Думаю - system() вам более подходит

anonymous ()
Ответ на: комментарий от arsi

Еще интересует вопрос, а popen выполняет команду через командную строку? т.е. через ps можно будет проследить запуск программы? А возможно выполнить внешнею программу напрямую? Или я что то путаю?

mbippl ()
Ответ на: комментарий от mbippl

> Еще интересует вопрос, а popen выполняет команду через командную строку?

man popen

The popen() function opens a process by creating a pipe, forking, and invoking the shell.

> А возможно выполнить внешнею программу напрямую?

да, «… by creating a pipe, forking, and invoking the program».

arsi ★★★★★ ()
Ответ на: комментарий от perlovik

А не могли бы маленьким примером показать? Заранее благодарен!

mbippl ()
Ответ на: комментарий от mbippl

>А возможно выполнить внешнею программу напрямую?

[fork +] execv

Или я что то путаю?

Скорее всего да, в ps все равно будет видно, что запустилась другая программа.

staseg ★★★★★ ()
Ответ на: комментарий от staseg

> в ps все равно будет видно, что запустилась другая программа.

#include <unistd.h>

int main(int argc, char *argv[]) {
        execl("/bin/sleep", "hello, lor!", "5", NULL);
        return 1;
}
$ cc hello.c
$ ./a.out
$ ps aux | grep hello
arsi     31444  0.0  0.0   4976   852 pts/10   S+   21:30   0:00 hello, lor! 5
arsi     31446  0.0  0.0   7264  1064 pts/0    S+   21:30   0:00 grep hello

;)

arsi ★★★★★ ()

Не, меня больше доставило

....printf("Запуск....
Jetty ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.