我有一些问题,这是一个很好的起点,我已经在我需要做的事情上做了点点,但我不确定这是否完全可能。
到目前为止,
我想的是,下面的功能。但我真的不太确定,任何帮助都是可怕的。
int createProcess(char *argv[]){
//argv[1] is given 'A'
//fork()
//getPID()
//assign PID to 'A'
}发布于 2014-09-16 16:45:34
我想你是在找叉子和外卖的组合。您可以分叉创建多个实例,然后使用exec将一个分叉进程替换为另一个进程(在您的例子中,它是同一个进程)。通过execl,您可以给出命令行参数。您可能需要在exec‘s进程中使用sprintf,在原始进程中使用sscanf。我想这暗示已经够多了。
发布于 2014-09-16 16:59:03
如果我理解正确的话,您想要的是将不同的字符“分配”到分叉过程的不同实例。你可以这样做:
#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;
} 发布于 2014-09-16 18:55:49
I have a file that I want to run multiple instances of 要做到这一点,您有两个选择:
但是,看看接下来的三个点,必须选择用叉子()。
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 为此,您需要使用"exec“family.By中使用"exec”的多个调用中的一个
还可以将命令行参数传递给新创建的进程。
这不能由叉来完成,因为叉用于复制当前进程,而如果您想要创建一个全新的进程,则必须使用exec调用。
编辑:
为了获得传递给进程的命令行参数,您需要
知道它的进程id,然后您可以查找一个名称与pid相同的目录。
在/proc文件系统内(未安装在实际设备上)。当您找到目录时
您将在名为"cmdline“的文件中获得传递给它的参数。
有关"/proc“文件系统的更多细节,您可以阅读。
https://stackoverflow.com/questions/25872045
复制相似问题