2014-09-16 13 views
0

좋은 시작점은 어디입니까? 내가 정확히해야 할 일에 점을 찍었지만 이것이 가능할 지 확신이 서지 않았습니다.fork() - C 프로그래밍

  • 은 내가 파일 내가 문자의 예를 할당해야
  • 각 프로세스에 할당 된 새 ID를 원하는 내가
  • 의 여러 인스턴스를 실행하고자하는 파일이 있습니다. 프로세스
  • 이미 주어진 문자와 프로세스가있는 경우에는 argv [1]을 통해 주어진 'A', 인쇄가 stderr에

지금까지, 나는이 생각하고 무엇을

, 아래 함수와 같은 것을 가지고 있습니다. 그러나 나는 정말 확실하지 않다, 어떤 도움이 awesomeness 될 .

int createProcess(char *argv[]){ 

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

분명히하기 위해 - 나는 누군가가 내 기능을 쓸 것으로 기대하지 않는다. 가능하다면 설명 만 할 수있다. :) – Sam23yo

+1

* file *의 다중 인스턴스? 뭐? – EOF

+0

* PID를 'A'*에 할당하십시오. 그게 무슨 뜻입니까? –

답변

2

나는 포크와 execl의 조합을 찾고 있다고 생각합니다. 포크를 사용하여 여러 인스턴스를 만든 다음 exec를 사용하여 분기 된 프로세스 중 하나를 다른 프로세스로 바꿀 수 있습니다 (이 경우 동일한 프로세스입니다). execl을 통해 명령 줄 인수를 제공 할 수 있습니다. exec'd 프로세스에서는 sprintf를 사용하고 원래 프로세스에서는 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)가 적용됩니다. 당신이 사용하여 "간부"family.By에 많은 호출 중 하나를 사용하기 위해 필요한이 들어

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

은 "간부"
당신은 또한 새로 생성 된 프로세스에 명령 줄 매개 변수를 전달할 수 있습니다.
포크는 현재 프로세스를 복제하는 데 사용되므로 포크로는 수행 할 수 없지만 완전히 새로운 프로세스를 만들려면 exec 호출을 사용해야합니다.

편집 : 명령 줄 매개 변수를 얻기 위하여

이 프로세스에 전달되는, 당신은 자신의 프로세스 ID를 알고
필요하고 당신은 PID와 같은 이름을 가진 디렉토리를 볼 수
/proc 파일 시스템 내부 (실제 장치에 마운트되지 않음).
디렉토리를 찾으면 "cmdline"파일에 전달 된 매개 변수를 가져옵니다.
자세한 내용은 "/ proc"파일 시스템을 참조하십시오.

+0

고맙습니다 !! 담당자가있는 경우 줄 것입니다. – Sam23yo