我需要将两个地址(32 位)传递给由 C 中的 execl 命令生成的进程,如下所示。在第一个程序中:
char buffer[18];
sprintf (&buffer[0],"%x\0 %x\0",lock, count);
arg_list[0]=&(buffer[0]);
arg_list[1]=&(buffer[10]);
execl ("/somedirectory/second_process", arg_list[0], arg_list[1], NULL);
然后在我的第二个程序中,我尝试按如下方式解析地址:
if (argc != 2) {
printf ("PROCESS 2: Invalid number of arguments. Terminating %i\n", argc);
return -1;
}
if ( !(sscanf (argv[1],"%x",&lock)) || !(sscanf (argv[2],"%x",&count)) ) {
printf ("PROCESS 2: Problem with parameters passed in");
return -1;
但是我的程序一直报错,说传入的参数无效。当我尝试打印收到的参数时,我的程序挂起。
printf ("The arguments passsed in are %s %s", argv[1], argv[2]);
固定的:
我错误地调用了 execl。它应该是:
execl ("/somedirectory/second_process", "second_process" arg_list[0], arg_list[1], NULL);
同样在过程2中:
if (argc != 3) {
printf ("PROCESS 2: Invalid number of arguments. Terminating %i\n", argc);
return -1;
}
因为传入的第一个参数应该是下面 Chris 建议的进程名称。
谢谢!