簡體   English   中英

C Linux 你如何將 Argument 傳遞給另一個程序?

[英]C Linux How you passing Argument to another program?

我想在 C 中創建另一個進程。但我不知道如何將參數傳遞給另一個進程,使用fork()exec()這是我的代碼

sls.c

   int main() {
    void start_game (const char* file_name,int N,int max_lives)
{
    pid_t pid;
    int child_status;
    pid = fork();

    if(pid!=0){
        wait(&child_status);
    }
    else{
       if(-1 == execl("./player","player",&file_name,&max_lives,(char *)NULL))
       {
       perror("execlp() failed");
       return 1;
       }
    }
  int r = 1+rand()%max_lives;
}
    return(0);
}

我需要將file_namemax_live傳遞給player.c以便player.c可以讀取相同的文件

播放器

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

pid_t child_pid = fork();
int child_status;
int sidekick_amount = (int)getpid%5;

void read_ints (const char* file_name)
{
 // Normal read file stuff here 
}


if (child_pid!=0)
{
    wait(&child_status);
}
else
{
    execlp("","-l",NULL);
    printf("Exec error\n");
    exit(-1);
}

   int lives = argv[2];
   printf("\nAt pos 0: Player %d has %d lives , %d sidekicks and 
   \n is ready to start ",(int)getppid(),lives,sidekick_amount);

    read_ints(file_name);
    return (0);
}

閱讀文件並設置伙伴數量后。 player.c需要為sidekick_amount生成sidekick.c進程作為player.c child 。 但我無法從player.c 中獲取file_name生命

搭檔

enter code here

輸出

At pos 0: Player 25477 has -5703328 lives , 1 sidekicks and is ready to start 

感謝所有幫助,非常感謝所有答案

您需要將整數max_lives轉換為字符串,以便將其作為函數參數傳遞。 當您傳遞文件名時,只需傳遞字符串本身,而不是指針的地址。

void start_game (const char* file_name,int N,int max_lives)
{
    pid_t pid;
    int child_status;
    pid = fork();


    if(pid!=0){
        wait(&child_status);
    }
    else{
        char max_lives_str[20];
        sprintf(max_lives_str, "%d", max_lives);
        if(-1 == execl("./player","player", file_name, max_lives_str, (char *)NULL))
        {
           perror("execlp() failed");
           return 1;
        }
    }
    int r = 1+rand()%max_lives;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM