![](/img/trans.png)
[英]How can you send a string given has argument to a program to another program using UNIX signals in C?
[英]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_name和max_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.