Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Task 3
- // Параметры при запуске передавать в кавычках, чтобы программам можно было
- // передать аргументы.
- // Если аргументы передавать ненадо, можно вместо функции system использовать execve.
- #include <stdio.h>
- #include <unistd.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- int main(int argc, const char *argv[]) {
- __pid_t cpid;
- // 0 элемент пропустим, т.к. это имя нашей программы.
- for (int i = 1; i < argc; i++) {
- cpid = fork();
- if (cpid == 0) {
- // Это копия. Запустим программу без параметров.
- printf("CHILD: exec: %s\n", argv[i]);
- //execv(argv[i], (char *[]){ argv[i], "1000", NULL });
- system(argv[i]);
- _exit(0);
- }
- else if (cpid < 0) {
- perror("Fork error");
- }
- else {
- // После форка основной процесс попадет сюда.
- int status;
- waitpid(cpid, &status, 0);
- printf("Child process name=%s, PID=%d, return code=%d\n", argv[i], cpid, status);
- }
- }
- printf("DONE\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement