2014-09-16 2 views
0

У меня проблемы с разработкой, где хорошая отправная точка для этого, Я сделал точечные точки на том, что мне нужно делать, но я не уверен, что это вполне возможно.fork() - программирование на C

  • У меня есть файл, который я хочу запустить несколько экземпляров из
  • Я хочу новый идентификатор, присвоенный каждый процесс для файла
  • мне нужно назначить обугленный напр. «А», который был дан через ARGV [1] в процессе
  • Если есть уже процесс с полукокса, выводит на стандартный вывод

До сих пор

, что я имею в виду это, что-то вроде функции ниже. Но я действительно не уверен, любая помощь была бы удивительной.

int createProcess(char *argv[]){ 

    //argv[1] is given 'A' 
    //fork() 
    //getPID() 
    //assign PID to 'A' 
} 
+0

уточнить - я не ожидаю, что кто-то напишет мою функцию, просто может быть объяснение, если это возможно или нет :) – Sam23yo

+1

Несколько экземпляров * файла *? Какие? – EOF

+0

* присваивать PID «A» *, что это значит? –

ответ

2

Я думаю, что вы ищете комбинацию вилок и execl. Вы можете использовать fork для создания нескольких экземпляров, а затем заменить один из процессов forked другим процессом с помощью exec (в вашем случае это тот же процесс). Через execl вы можете дать аргументы командной строки. Возможно, вам придется использовать sprintf в процессе exec'd и sscanf в исходном процессе. Думаю, этого достаточно.

0

Если я правильно понимаю, что вы хотите, это «назначить» разные символы различным экземплярам разветвленного процесса. Вы можете сделать что-то вроде этого:

#include <stdio.h> 
#include <unistd.h> 

int main(int argc, char *argv[]){ 
    char chr = *argv[1]; 
    pid_t res; 

    res = fork(); 
    if (!res) 
     chr++; 
    printf("%c \n", chr); 
    return 0; 

}

1
I have a file that I want to run multiple instances of 

Для этого у вас есть два варианта:
1. Вы можете использовать несколько вилки() системный вызов, чтобы дублировать новые дочерние процессы и откройте файл в этих процессах.
2. У вас может быть несколько потоков в вашей программе, которые открывают один и тот же файл.

Но, глядя на следующие три точки, fork() - это выбор, с которым нужно идти.

I want a new ID assigned to each process for the file 

При повторении процессов с использованием fork() каждый процесс получает свой собственный уникальный Id (pid) процесса.

I need to assign a char eg. 'A' that was given through argv[1] to a process 

Для этого вам нужно использовать один из многочисленных звонков в «ехес» family.By с помощью «Exec»
вы можете также передать параметры командной строки для вновь созданных процессов.
Это не может быть сделано с помощью fork, поскольку fork используется для дублирования текущего процесса, тогда как если вы хотите создать совершенно новый процесс, вы должны использовать вызовы exec.

Edit:

Для того, чтобы получить параметры командной строки, передаваемых в процессе, вы должны
знать идентификатор процесса, а затем вы можете посмотреть на каталог с его именем же, как ФИД
внутри файловой системы/proc (не установлено на самом устройстве).Когда вы найдете каталог
, вы получите параметры, переданные ему в файле с именем «cmdline».
Для более подробной информации вы можете прочитать о файловой системе «/ proc».

+0

спасибо! Если бы у меня были повторы, я бы дал. – Sam23yo

Смежные вопросы