выполнение программы c использованием системного вызова - PullRequest
1 голос
/ 05 января 2011

Я хочу написать программу на C, которая может читать другую программу и передавать ее процессору для выполнения. Можно ли использовать системный вызов для этого без использования shell (linux)

Спасибо

Ответы [ 2 ]

6 голосов
/ 05 января 2011

Системный вызов, который вы ищете, execve. Он имеет связанные функции execl, execlp, execle, execv, execvp, в зависимости от того, как вы хотите сохранить и передать аргументы командной строки и / или переменные среды. Но суть в том, что все эти функции не позволят вызывающей программе делать что-либо еще, поскольку новая программа заменяет существующую.

Если вы хотите запустить программу, дождитесь ее завершения, а затем возобновите исходную программу, попробуйте вместо этого библиотечную функцию system. (Хотя system требует /bin/sh.)

Если вам нужно что-то более изощренное, вам, вероятно, придется объединить fork и waitpid с одной из exec* функций. На страницах руководства и в Интернете есть множество примеров того, как комбинировать эти функции.

0 голосов
/ 05 января 2011

, если вы хотите простой способ сделать это:

 system("./Program_To_Run.o");

Однако это не лучший способ. Это просто самый быстрый способ.

Если вы используете амперсанд, вы можете обработать фон:

system("./Program_To_Run.o &");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...