2011-10-23 25 views
4

私は次のコードドラフトを持っています。fork()の後に子プロセスにコマンドライン引数を渡す方法

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

int main(int argc, char *argv[]) 
{ 

    printf("usage: %i filename", argc); 

    pid_t pID = fork(); 
    if (pID == 0)    // child 
    { 
     // Code only executed by child process 
     printf("Child PID: %i", pID); 

     int file = open("/tmp/rtail", O_CREAT | O_WRONLY); 

     //Now we redirect standard output to the file using dup2 
     dup2(file,1); 

     char tmp[30]; 
     sprintf(tmp, "cat `tail -f %s`", argv[1]); 
    } 
    else if (pID < 0)   // failed to fork 
    { 
     printf("Failed to fork"); 
     exit(1); 
     // Throw exception 
    } 
    else         // parent 
    { 

    } 

    // Code executed by both parent and child. 

    return 0; 
} 

子プロセスにコマンドライン引数を渡すにはどうすればよいですか?例えば、./app alch.txt実行している私は

sprintf(tmp, "cat `tail -f %s`", argv[1]); 

はtmpに

cat `tail -f alch.txt` 

生成します。

+3

あなたはそれをやっているのとまったく同じですか?あなたのコードは問題ありません。あなたは何を持っているのですか? –

答えて

7

子プロセスにコマンドライン引数を渡すにはどうすればよいですか?

特別な操作は必要ありません。 forkは、各プロセスがargvを含むすべてのローカル変数を取得することを保証します。

1

ご迷惑をおかけして申し訳ありませんが、本当にうまく動作します。私の以前のバージョンは何らかの理由で動作しませんでしたが、明らかに私は正しいものに変更しました。次の質問の前に自分のコードを実行します。

関連する問題